C/C++面试题-2 之2/2

news/2024/11/23 5:55:40/

之2/2

45. 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针)
   struct node { char val; node* next;}
   bool check(const node* head) {} //return false : 无环;true: 有环

一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):
bool check(const node* head)
{
    if(head==NULL)  return false;
    node *low=head, *fast=head->next;
    while(fast!=NULL && fast->next!=NULL)
    {
        low=low->next;
        fast=fast->next->next;
        if(low==fast) return true;
    }
    return false;
}

Sony笔试题
  1.完成下列程序
  *
  *.*.
  *..*..*..
  *...*...*...*...
  *....*....*....*....*....
  *.....*.....*.....*.....*.....*.....
  *......*......*......*......*......*......*......
  *.......*.......*.......*.......*.......*.......*.......*.......
  #include <stdio.h>
  #define N 8
  int main()
  {
   int i;
   int j;
   int k;
   ---------------------------------------------------------
   | |
   | |
   | |
   ---------------------------------------------------------
   return 0;
  }
  2.完成程序,实现对数组的降序排序
  #include <stdio.h>
  void sort( );
  int main()
  {
   int array[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出
   sort( );
   return 0;
  }
  void sort( )
  {
   ____________________________________
   | |
   | |
   |-----------------------------------------------------|
  }
  3.费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用

他方法,但要说明你选择的理由。
  #include <stdio.h>
  int Pheponatch(int);
  int main()
  {
   printf("The 10th is %d",Pheponatch(10));
   return 0;
  }
  int Pheponatch(int N)
  {
  --------------------------------
  | |
  | |
  --------------------------------
  }
  4.下列程序运行时会崩溃,请找出错误并改正,并且说明原因。
  #include <stdio.h>
  #include <malloc.h>
  typedef struct{
   TNode* left;
   TNode* right;
   int value;
  } TNode;
  TNode* root=NULL;
  void append(int N);
  int main()
  {
   append(63);
   append(45);
   append(32);
   append(77);
   append(96);
   append(21);
   append(17); // Again, 数字任意给出
  }
  void append(int N)
  {
   TNode* NewNode=(TNode *)malloc(sizeof(TNode));
   NewNode->value=N;
   if(root==NULL)
   {
   root=NewNode;
   return;
   }
   else
   {
   TNode* temp;
   temp=root;
   while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp.
right
!=NULL
  ))
   {
   while(N>=temp.value && temp.left!=NULL)
   temp=temp.left;
   while(N<temp.value && temp.right!=NULL)
   temp=temp.right;
   }
   if(N>=temp.value)
   temp.left=NewNode;
   else
   temp.right=NewNode;
   return;
   }
  }
华为笔试题
  1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
  2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢 ?
  3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
  4.请问C++的类和C里面的struct有什么区别?
  5.请讲一讲析构函数和虚函数的用法和作用。
  6.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的 ?
  7.8086是多少位的系统?在数据总线上是怎么实现的?
联想笔试题
  1.设计函数 int atoi(char *s)。
  2.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
  3.解释局部变量、全局变量和静态变量的含义。
  4.解释堆和栈的区别。
  5.论述含参数的宏与函数的优缺点。
普天C++笔试题
  1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。
  2.写一个函数,将其中的\t都转换成4个空格。
  3.Windows程序的入口是哪里?写出Windows消息机制的流程。
  4.如何定义和实现一个类的成员函数为回调函数?
  5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
  6.C++里面如何声明const void f(void)函数为C程序中的库函数?
  7.下列哪两个是等同的
  int b;
  A const int* a = &b;
  B const* int a = &b;
  C const int* const a = &b;
  D int const* const a = &b;
  8.内联函数在编译时是否做参数类型检查?
  void g(base & b){
   b.play;
  }
  void main(){
   son s;
   g(s);
   return;
  }
大唐电信
  DTT笔试题
  考试时间一小时,第一部分是填空和选择:
  1.数列6,10,18,32,“?”,问“?”是几?
  2.某人出70买进一个x,80卖出,90买回,100卖出,这桩买卖怎么样?
  3.月球绕地球一圈,至少要多少时间?
  4.7个人用7小时挖了7米的沟,以同样的速度在50小时挖50米的沟要多少人?
  5.鱼头长9,鱼尾等于鱼头加半个鱼身,鱼身等于鱼头加鱼尾,问鱼全长多少?
  6.一个小姐买了一块手表,回家发现手表比她家的表慢了两分钟,晚上看新闻的时候
又发现她家的表比新闻里的时间慢了两分钟,则 。
  A 手表和新闻里的时间一样
  B 手表比新闻里的时间慢
  C 手表比新闻里的时间快
  7.王先生看到一则招聘启事,发现两个公司除了以下条件不同外,其他条件都相同
  A 半年年薪50万,每半年涨5万
  B 一年年薪100万,每一年涨20万
  王先生想去一家待遇比较优厚的公司,他会去哪家?
  10.问哪个袋子里有金子?
  A袋子上的标签是这样写的:B袋子上的话是对的,金子在A袋子。
  B袋子上的标签是这样写的:A袋子上的话是错的,金子在A袋子里。
  11.3个人住酒店30块钱,经理找回5块钱,服务生从中藏了2块钱,找给每人1块钱,
3×(10&#61485;1)+2=29,问这是怎么回事?
  12.三篇写作,均为书信形式。
  (1)一片中文的祝贺信,祝贺某男当了某公司xx
  (2)两篇英文的,一是说有事不能应邀,派别人去;另一篇是讨债的,7天不给钱就
走人(主要考business letter格式)。
  大唐面试试题
  1.什么是中断?中断发生时CPU做什么工作?
  2.CPU在上电后,进入操作系统的main()之前必须做什么工作?
  3.简述ISO OSI的物理层Layer1,链路层Layer2,网络层Layer3的任务。
  4.有线电话和无线电话有何区别?无线电话特别需要注意的是什么?
  5.软件开发五个主要step是什么?
  6.你在开发软件的时候,这5个step分别占用的时间百分比是多少?
  7.makefile文件的作用是什么?
  8.UNIX显示文件夹中,文件名的命令是什么?能使文件内容显示在屏幕的命令是什么 ?
  9.(选做)手机用户在从一个基站漫游到另一个基站的过程中,都会发生什么?
网通笔试题
  选择题(每题5分,只有一个正确答案)
  1.中国1号信令协议属于 的协议。
  A ccs B cas C ip D atm
  2.isdnpri协议全称是 。
  A 综合业务模拟网基速协议
  B 综合业务模拟网模拟协议
  C 综合业务数字网基率协议
  D 综合业务数字网基次协议
  3.路由协议中, 协议是用距离作为向量的。
  A ospf B bgp C is-is D rip
  4.中国智能网中,ssp与scp间最上层的ss7协议是 。
  A incs B is41b C is41c D inap
  5.dtmf全称是 。
  A 双音多频 B多音双频 C多音三频 D三音多频
  6.计算机的基本组成部分中,不包含下面设备的是 。
  A cpu B输入设备 C存储器 D接口
  7.脉冲编码调制的简称是 。
  A pcm B pam C (delta)M D atm
  8.普通电话线接口专业称呼是 。
  A rj11 B rj45 C rs232 D bnc
  9.现有的公共数据网都采用 。
  A电路交换技术 B报文交换技术
  C语音插空 D分组交换
  10.ss7协议中的制止市忙消息简写为 。
  A stb B slb C sub D spb
  简答题(每题10分)
  1.简述普通电话与IP电话的区别。
  2.简述随路信令与公路信令的根本区别。
  3.说明掩码的主要作用。
  4.ss7协议中,有三大要素决定其具体定位,哪三大要素?
  5.描述ss7的基本通话过程。
  6.简述通信网的组成结构。
  7.面向连接与面向非连接各有何利弊?
  8.写出爱尔兰的基本计算公式。
  9.数据网主要有哪些设备?
  10.中国一号协议是如何在被叫号码中插入主叫号码的?
东信笔试题目
  笔试:30分钟。
  1.压控振荡器的英文缩写。
  2.动态随机存储器的英文缩写。
  3.选择电阻时要考虑什么?
  4.单片机上电后没有运转,首先要检查什么?
  5.计算机的基本组成部分及其各自的作用。
  6.怎样用D触发器、与或非门组成二分频电路?
中软融鑫笔试题
  1.关于工作
  (1) 你对未来的工作生活是怎样憧憬的?为何选择我公司作为求职公司?
  (2)请用不超过30个字给出一个最能让我们录用你的理由。
  (3)你认为比较理想的工作环境是怎样的?
  (4)你个人的中长期的职业发展目标是怎样的?
  2.关于社会
  (1)如果你是杨利伟,你在太空中向祖国人民说的第一句话是什么?
  (2)宋美龄女士于2003年10月谢世,对这位著名人士在西安事变中的态度和作用,你
是如何看待的?(不超过300字)
  (3)北京政府颁布的对拾金不昧者,失主要奖励相当于财产20%奖金的公告,你是如
何看的?
  (4)如果给你50万元人民币,你将会用这些钱做什么?
  (5)在美国,男、女卫生间(厕所)的正确称呼为什么?请用英语写出答案。
  (6)你认为麦当劳是世界最大的汉堡生产商吗?如果不是,请说出你的观点。
  3.教育背景
  (1)你受过哪些正规的教育或培训?(自高中毕业起)
  (2)在校期间进行过哪些社会活动?
Delphi笔试题目
  机械类笔试试题
  1. Briefly describe what is blanking(cutting), forming, coining and
emboss
ing in stamping process.
  2. What is metal clading?
  3. What is the purpose of adding glass fiber to thermoplastic material?
  4. In contrast with metal and thermoplastic material,which has a higher
co
efficient of thermal expansion(CTE).
  5. The most suitable material for a integral hinge design (typical
plastic
thickness=0.25 to 0.5mm at hinge)
  6. Can a bending load makes both compressive and tensile stress in a
membe
r?
  7. What is the design criteria used in plastics catch/snap?
  8. What is FEA?
  9. Why is natural frequency important in vibration analysis?
  10. What is the deflection equation of a cantilever beam fixed at one
edge
?
  EE笔试试题
  1. Name 3 Vehicle Buses.
  2. Name 2 possible sources of Electromagnetic interference on
Electronics
Circuit ASM.
  3. Wavelength for 12MHz frequency signal is____
  4. Name 2 important considerations for car radio performan -ce related
to
audio signal processing under multipath condition?
  5. What is the typical FM receiver RF signal strength to achieve 30dB
S/N
for car radio?
  6. When a radio is tuned to 98.1 MHz & with a LO of 108.8 MHz, what is
the
image frequency?
  7. For a system with a matched impedance, what is the Reflection
Coefficie
nt and SWR?
  8. Which property of the output capacitor is the primary cause of Low
Drop
Out(LDO) regulator loop instability?
  (1)Equivalent series resistance(ESR)
  (2)Effective series inductance(ESL)
  (3)Capacitance value
  (4)Dielectric material
  9. The switching regulator is capable of:
  (1)Higher power conversion efficiency
  (2)Providing an output voltage that is higher than the input
  (3)Generating an output boltage oppsite in polarity to the input
  (4)All of the above
  10. A linear regulator op Vin(max) = 10v, Vout(min) = 4.8v, Iout(max) =
2.
5mA, Iq(max) = 2.5mA, Ta(max) = 8.5摄氏度,The regulator is available in 3
pac
kages.Each package has the following thermal characteristics:
  Package Rja(摄氏度/W) Rjc(摄氏度/W)
  SO14 125 30
  D1P8 100 52
  Choose the most suitable package to handle the power dissipation
requireme
nt without a heat sink and why.
  软件笔试题
  1. How do you code an infinite loop in C?
  2. Volatile:
  (1)What does the keyword volatile mean? Give an example
  (2)Can a parameter be both const and volatile? Give an example
  (3)Can a pointer be volatile? Give an example
  3. What are the values of a, b, and c after the following instructions:
  int a=5, b=7, c;
  c = a+++b;
  4. What do the following declarations mean?
  (1)const int a;
  (2)int const a;
  (3)const int *a;
  (4)int * const a;
  (5)int const * a const;
  5. Which of the following statements describe the use of the keyword
stati
c?
  (1)Within the body of a function: A static variable maintains its
value
between function revocations
  (2)Within a module: A static variable is accessible by all functions
wit
hin that module
  (3)Within a module: A static function can only be called by other
functi
ons within that module
  6. Embedded systems always require the user to manipulate bits in
register
s or variables. Given an integer variable a, write two code fragments.
  The first should set bit 5 of a. The second shnuld clear bit 5 of a. In
bo
th cases, the remaining bits should be unmodified.
  7. What does the following function return?
  char foo(void)
  {
   unsigned int a = 6;
   iht b = -20;
   char c;
   (a+b > 6) ? (c=1): (c=0);
   return c;
  }
  8. What will be the output of the following C code?
  main()
  {
   int k, num= 30;
   k =(num > 5 ? (num <=10 ? 100:200): 500);
   printf(“%d”, k);
  }
  9. What will the following C code do?
  int *ptr;
  ptr =(int *)Ox67a9;
  *ptr = Oxaa55;
  10. What will be the output of the follow C code?
  #define product(x) (x*x)
  main()
  {
   int i = 3, j, k;
   j = product(i++);
   k = product(++i);
   printf(“%d %d”,j,k);
  }
  11. Simplify the following Boolean expression
  !((i ==12) || (j > 15))
  12. How many flip-flop circuits are needed to divide by 16?
  13. Provides 3 properties that make an OS, a RTOS?
  14. What is pre-emption?
  15. Assume the BC register value is 8538H, and the DE register value is
62
A5H.Find the value of register BC after the following assembly operations:
  MOV A,C
  SUB E
  MOV C,A
  MOV A,B
  SBB D
  MOV B,A
  16. In the Assembly code shown below
  LOOP: MVI C,78H
   DCR C
   JNZ LOOP
   HLT
  How many times is the DCR C Operation executed?
  17. Describe the most efficient way (in term of execution time and code
si
ze) to divide a number by 4 in assembly language
  18. what value is stored in m in the following assembly language code
frag
ment if n=7?
   LDAA #n
  LABEL1: CMPA #5
   BHI L3
   BEQ L2
   DECA
   BRA L1
  LABEL2: CLRA
  LABEL3: STAA #m
  19. What is the state of a process if a resource is not available?
  #define a 365*24*60*60
  20. Using the #define statement, how would you declare a manifest
constant
that returns the number of seconds in a year? Disregard leap years in your
an
swer.
  21. Interrupts are an important part of embedded systems. Consequently,
ma
ny compiler vendors offer an extension to standard C to support interrupts.
Ty
pically, the keyword is __interrupt. The following routine (ISR). Point out
pr
oblems in the code.
  __interrupt double compute_area (double radius)
  {
   double area = PI * radius * radius;
   printf(“\nArea = %f”, area);
   return area;
  }
Hongkong Bank笔试题
  1. Please state why you chose to follow these activities and how they
have
contributed to your personal development. You may wish to give details of
you
r role whether anyone else was involved and any difficulties you
encountered.
  2. Please state how you have benefited from your work experience.
  3. How much is your present monthly salary including allowances.
  4. Do you need to compensate your present employer if you resign? If so,
p
lease give details.
  5. Other than academic success, what has been your greatest achievement
to
date? What do you see as your personal strength, why?
  6. Please state why the position you have applied for is appropriate for
y
ou; Why you have selected HongKong Bank and what your career objectives are.
A.T. Keaney笔试题
  1. Describe your greatest achievement in the past 4-5 years?
  2. What are your short-term and long-term career objectives? What do you
t
hink is the most ideal job for you?
  3. Why do you want to join A.T kearney? What do you think you can
contribu
te to A.T kearney?
  4. Why are you applying for a position at Arthur Anderson?
  5. What are your expectations of our firm.
  6. Describe your hobbies and interests.
Shell company笔试题
  1. How wold your colleagues/classmates describe you in five words? On
what
evidence would they base this assessment.
  2. If you are asked to recruit the best graduates for shell, what would
yo
u do to attract them? What would you do to select them?
  3. Please describe a new activity that you have initiated and
implemented.
Please highlight your role out.
  4. Please describe your outstanding non-academic achieve- ments.
  5. Please describe any other significant activities you have been
involved
in including organizing people.
  6. Imagine that Shell has found oil in an inland province of China, near
a
large river. You are responsible for planning how to transport the oil to
the
coast thousands of miles away. What are the main issue you would consider,
an
d what would you do?
KPMG笔试题
  “The big economic difference between nuclear and fossil-fuelled power
sta
tions is that nuclear reactors are more expensive to build and decommission,
b
ut cheaper to sun. So disputes over the relative efficiency of the two
systems
revolve not just around prices of coal and uranium today and tomorrow, but
al
so around the way in which future income should be compared with current
incom
e.”
  1. The main difference between nuclear and fossil-fuelled power stations
i
s an economic one.
  TRUE
  UNTRUE
  CANNOT SAY
  2. The price of coal is not relevant to discussions about the relative
eff
iciency of nuclear reactors.
  TRUE
  UNTRUE
  CANNOT SAY
  3. If nuclear reactors were cheaper to build and decommission than
fossil-
fuelled power stations, they would definitely have the economic advantage.
  TRUE
  UNTRUE
  CANNOT SAY
  “At any given moment we are being bombarded by physical and
psychological
stimuli competing for our attention. Although our eyes are capable of
handlin
g more than 5 million bits of data per second, our brain are capable of
interp
reting only about 500 bits per second. With similar disparities between each
o
f the other senses and the brain, it is easy to see that we must select the
vi
sual, auditory, or tactile stimuli that we wish to compute at any specific
tim
e.”
  4. Physical stimuli usually win in the competition for our attention.
  TRUE
  UNTRUE
  CANNOT SAY
  5. The capacity of the human brain is sufficient to interpret nearly all
t
he stimuli the senses can register under optimum conditions.
  TRUE
  UNTRUE
  CANNOT SAY
  6. Eyes are able to cope with a greater input of information than ears.
  TRUE
  UNTRUE
  CANNOT SAY
  VERBAL ANSWER:
  (1)C CANNOT SAY
  (2)B UNTRUE
  (3)A TRUE
  (4)C CANNOT SAY
  (5)B UNTRUE
  (6)C CANNOT SAY
  PartII NUMERCAL TEST
  1.Which country had the highest number of people aged 60 or over at the
s
tart of 1985?
  A. UK
  B. France
  C. Italy
  D. W.Germany
  E. Spain
  2.What percentage of the total 15mm button production was classed as
sub-
standard in September?
  AA 10.5% BB 13% CC 15% DD 17.5% EE 20% AB 23.5% AC 25%
  AD 27.5% AE 28% BC 30.5%
  3. How many live births occurred in 1985 in Spain and Italy together (to
t
he nearest 1000)?
  A. 104 000
  B. 840 000
  C. 1 044 000
  D. 8 400 000
  E. 10 440 000
  4. What was the net effect on the UK population of the live birth and
deat
h rates in 1985?
  A. Decrease of 66 700
  B. Increase of 752 780
  C. Increase of 84 900
  D. Cannot Say
  E. Increase of 85 270
  5. By how much did the total sales value of November‘s button
production
vary from October‘s?
  A. 8.50 (Decrease)
  B. 42.50 (Decrease)
  C. 85.00 (Increase)
  D. 27.50 (Decrease)
  E. No change
  6. What was the loss in potential sales revenue attributable to the
produc
tion of sub-standard (as opposed to standard) buttons over the 6 month
period?
  A. 13.75
  B. 27.50
  C. 137.50
  D. 280.00
  E. 275.00
香港电信笔试题
  1. Based on your understanding of the following java related
technologies:
servlets, JavaServerPage, JavaBeans, Enterprise JavaBeans, how do you think
t
hese technologies are work together or are applied in the development of an
in
ternet-based application (25marks).
  2. In your opinion ,what do you think are the advantages or benefitsof
usi
ng an object-oriented approach to software development? how do you think
those
benefits can be achieved or realized? (15marks).
  3. In designing your classes, given the choice between inheritance and
agg
regation which do you choose (15marks).
  4. How would you work around the lack of multiple inheritance feature in
J
ava (15marks).
  5. What would you consider to be the hardest part of OO analysis and
desig
n and why (10marks).
  6. How do you keep yourself up to date with the latest in software
techono
gy, especially in the field of software development (10marks).
  7. What si your career aspiration? Why do you think this E-Commerce
Develo
pment Center can help you in achieving your career goals (10marks) (1hr,
answe
r in English).
  L\‘OR&Eacute;AL的笔试题
  1. Would you please describe yourself in 3-4 lines? (limited in 500
words)
  2. Could you tell us why we should choose you as a Loreal Person, and
what
makes you unique? (limited in 500 words)
  3. What is your short-term and long-term career plan? (limited in 500
word
s)
  4. What kind of group activities are you interested in and what type of
ro
le do you often play? (limited in 500 words)
  5. Please use one sentence to give a definition of ‘Beauty’, and
describ
e the most beautiful thing in your life. (limited in 500 words)
维尔VERITAS软件笔试题
  1. A class B network on the internet has a subnet mask of 255.255.240.0,
w
hat is the maximum number of hosts per subnet .
  a. 240 b. 255 c. 4094 d. 65534
  2. What is the difference: between o(log n) and o(log n^2), where both
log
arithems have base 2 .
  a. o(log n^2) is bigger b. o(log n) is bigger
  c. no difference
  3. For a class what would happen if we call a class’s constructor from
wi
th the same class’s constructor .
  a. compilation error b. linking error
  c. stack overflow d. none of the above
  4. “new” in c++ is a: .
  a. library function like malloc in c
  b. key word c. operator
  d. none of the above
  5. Which of the following information is not contained in an inode .
  a. file owner b. file size
  c. file name d. disk address
  6. What’s the number of comparisons in the worst case to merge two
sorted
lists containing n elements each .
  a. 2n b.2n-1 c.2n+1 d.2n-2
  7. Time complexity of n algorithm T(n), where n is the input size ,is T
(n)
=T(n-1)+1/n if n>1 otherwise 1 the order of this algorithm is .
  a. log (n) b. n c. n^2 d. n^n
  8. The number of 1’s in the binary representation of 3*4096+
15*256+5*16+
3 are .
  a. 8 b. 9 c. 10 d. 12
百威啤酒(武汉公司)
  1,为什么申请来百威?
  2,将来有什么打算?
  3,有没有社会活动经历?
  4,有没有当众演讲的经历?
  5,经常使用那些软件?
  6,喜欢哪些课程?
  7,你认为工作中的什么因素对你来说最重要?
  8,什么时候可以来上班?可以在这里工作多久?
  9,八点上班,要加班和出差,能不能做到?
星巴克
  1、 您是一家咖啡店的店经理,你发现店内同时出现下列状况:
   1)许多张桌子桌面上有客人离去后留下的空杯未清理,桌面不干净待整理。
   2)有客人正在询问店内卖哪些品种,他不知如何点咖啡菜单。
   3)已有客人点完成咖啡,正在收银机旁等待结帐。
   4)有厂商正准备要进货,需要店经理签收。
    请问,针对上述同时发生的情况,你要如何排定处理之先后顺序,为什么
  2、 有一位甲员工脾气不好以致在前三家店因为与店内其他同事相处不佳而屡屡调动
,现在甲被调到你的店里面来,请问身为店经理的你,将如何应对??
  3、 你是店经理,本周五结帐后,发现门市总销售额较上周五减少30%,请问可能原因
会是哪几种,各原因如何应对?
凹凸电子软件笔试题
  1. Select ONE of the following projects to discuss:
  a. Signal Filtering: You are given a sampled realtime waveform
consisting
of a sensor reading mixed with highly periodic impulses and high frequency
noi
se.The desired output is the realtime filtered sensor signal with the
impulses
and noise removed, and a readout of the impulse period. The FFT may not be
us
ed.
  b. Interrupt Processing.A headware register consisting of eight
independen
t edge triggered latches is used to record external asynchronous interrupt
req
uests. When any of the request bits are latched, a software interrupt is
gener
ated. The software may read the latch to see which interrupt(s) occurred.
Writ
ing a one to any latch bit will clear the latch. How does that software
assure
that no interrupt request is ever missed?
  c. User Interface: a prototype MP3 player interface consisting of a
playli
st display and a few control buttons is given to you. How would you make the
i
nterface “skinnable”,with user selected graphics, options, and control
butto
n placement?
  Each project description is incomplete. What questions would you ask to
co
mpletely specify the project? What development tools would you prefer to
use?
What algorithm /data structures/design would you use?
  2. What program(s) have you coded for you own enjoyment (not part of a
sch
ool project,not for pay). What type of software project would you most enjoy
w
orking on?
  3. Have you participated in a team programming project? What is the
hardes
t part of programming as a team, as opposed to programming alone?
友立资讯笔试题目
  1.一堆鸡蛋,3个3个数剩余2个,5个5个数剩余1个,7个7个数剩余3个,问这堆鸡蛋
最少有多少个?并给出通解。
  2.列举五岳,及其所在省份。
  3.何为四书。
  4.按顺序默写24节气。
  5.默写于谦的《吟石灰》。
  6.英语翻译约300字。
  7.作文一篇:求职有感。
普华永道PWC笔试题目(作文)
  1.最近10年来中国媒体的变化。
  2.你认为发展汽车产业和公共交通哪个更重要?
  3.如何理解风险投资?
  4.如何理解广告的消极作用和积极作用?
Avant! 微电子EE笔试题
  1.名词解释:VLSI,CMOS,EDA,VHDL,Verilog,HDL,ROM,RAM,DRC,LVS。
  2.简述CMOS工艺流程。
  3.画出CMOS与非门的电路,并画出波形图简述其功能。
  4.画出N沟道增强型MOSFET的剖面图。
  5.简述ESD和latch-up的含义。
  6.简述三极管与MOS管的区别。
  7.简述MOORE模型和MEALY模型。
  8.简述堆栈与队列的区别。
  奇码数字信息有限公司笔试题
  1.画出NMOS的特性曲线(指明饱和区,截至区,线性区,击穿区和C-V曲线)
  2.2.2um工艺下,Kn=3Kp,设计一个反相器,说出器件尺寸。
  3.说出制作N-well的工艺流程。
  4.雪崩击穿和齐纳击穿的机理和区别。
  5.用CMOS画一个D触发器(clk,d,q,q-)。
德勤笔试题
  五个人来自不同地方,住不同房子,养不同动物,吸不同牌子香烟,喝不同饮料,喜
欢不同食物。根据以下线索确定谁是养猫的人。
  (1)红房子在蓝房子的右边,白房子的左边(不一定紧邻)
  (2)黄房子的主人来自香港,而且他的房子不在最左边。
  (3)爱吃比萨饼的人住在爱喝矿泉水的人的隔壁。
  (4)来自北京的人爱喝茅台,住在来自上海的人的隔壁。
  (5)吸希尔顿香烟的人住在养马的人右边隔壁。
  (6)爱喝啤酒的人也爱吃鸡。
  (7)绿房子的人养狗。
  (8)爱吃面条的人住在养蛇的人的隔壁。
  (9)来自天津的人的邻居(紧邻)一个爱吃牛肉,另一个来自 成都。
  (10)养鱼的人住在最右边的房子里。
  (11)吸万宝路香烟的人住在吸希尔顿香烟的人和吸“555”香烟的人的中间(紧邻)
  (12)红房子的人爱喝茶。
  (13)爱喝葡萄酒的人住在爱吃豆腐的人的右边隔壁。
  (14)吸红塔山香烟的人既不住在吸健牌香烟的人的隔壁,也不与来自上海的人相邻 。
  (15)来自上海的人住在左数第二间房子里。
  (16)爱喝矿泉水的人住在最中间的房子里。
  (17)爱吃面条的人也爱喝葡萄酒。
  (18)吸“555”香烟的人比吸希尔顿香烟的人住的*右。
扬智(科技)笔试题目
  软件题目
  1. Queue is a useful structure
  * What is a queue?
  * Write 5 operations or functions, without details, that can be done on
a
queue.
  2. Insert a sequence fo keys(24,49,13,20,59,23,90,35) into a data
structur
e, which has no keys initially. Depict the data structure after these
insertio
ns, if it is:
  * a heap tree
  * an AVL tree
  3. * What is a synchronous I/O bus?
  * What is an asnchronous I/O bus?
  * Compare the advantages and disadvantages of synchronous and a
synchronou
s I/O bus.
  4. Explain the following terminology:
  * Baud rate
  * Handshaking
  * Memory mapped I/O
  5. Explain the key issues in supporting a real-time operation system for
e
mbedded system.
  6. Explain the mapping of visual addresses to real addresses under
paging
by
  * direct mapping
  * associative mapping
  * combined direct/associated mapping
  7. Please explain what is “write-back” and “write-through”, and
discus
s the advantage and disadvantage about these two methods.
  8. Explain the concept and benefit of threads
  9. What is hardware interrupt? What is software interrupt? What is
excepti
on? Please tell me all you know about interrupt.
  10. Write a recursive function that tests wether a string is a
palindrome.
A palindrome is s string such as “abcba” or “otto” that reads the same
in
both directions.If you can write this function recursively,you can write an
i
terative version of this function instead.
  11.什么是进程(Process)和线程(Thread)?有何区别?
  12.MFC和SDK有何区别?
  13.IRP是什么?有何作用?
  14.Windows 2000操作系统下用户模式和内核模式下编程有何区别?
  15.驱动程序的BUFFER能swap到磁盘上去吗?为什么?
  16.试编写3个函数实现
  (1)建立一个双向链表
  (2)插入一个节点
  (3)删除一个节点
  17.简述Hardware interrupt和software中断的区别,简述其应用。
  18.试编写一个函数,计算一个字符串中A的个数。
  19.画出其相应流程图并编写一个函数实现一个整数到二进制数的转换,如输入6,输
出110。
  20.
  (1)编写一个递归函数,删除一个目录。
  (2)编写一个非递归函数,删除一个目录。
  并比较其性能。
  21.附加题:简单叙述编程经历
  硬件题目
  1.用mos管搭出一个二输入与非门。
  2.集成电路前段设计流程,写出相关的工具。
  3.解释名词IRQ,BIOS,USB,VHDL,SDR。
  4.简述如下Unix命令cp -r, rm,uname。
  5.用波形表示D触发器的功能。
  6.写异步D触发器的verilog module。
  7.What is PC Chipset?
  8.用传输门和倒向器搭一个边沿触发器。
  9.画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱。
  DSP题目
  1.H(n)&#61501;&#61485;a*h(n&#61485;1)+b*δ(n)
  (1)求h(n)的z变换
  (2)该系统是否为稳定系统
  (3)写出FIR数字滤波器的差分方程
  2.写出下面模拟信号所需的最小采样带宽
  (1)模拟信号的频率范围是0~4kHz
  (2)模拟信号的频率范围是2~4kHz
  3.名词解释
  (1)量化误差
  (2)直方图
  (3)白平衡
  (4)MMX
  4.写出下面几种格式中用到的压缩技术
  (1)JPEG
  (2)MPEG2
  (3)MP3
高通笔试题
  1. Can you describe the trend of wireless mobile communication industry?
(
2000 letters)
  2. Compare the major third generation technologies.(2000 letters)
  3. Describe the characteristics of Walsh function. Explain how to
generate
Walsh Function. (2000 letters)
  4. List factors that will affect the capacity of forward and reverse
links
of a CDMA system. (2000 letters)
  5. What are the differences between IS-95 A/B and cdma2000 1X? (2000
lette
rs)
威盛笔试试题
  2002年软件笔试题
  1.三组程序,找出你认为的错误。
  (1)a.c long temp[255];
  b.c extern *temp;
  (2)a.c long temp[255];
  b.c extern temp[256];
  (3)a.c long temp[255];
  b.c extern temp[];
  2.在第一个声明处编译出了奇怪的错误,为什么?
  #include <stdio.h>
  #include “myfun1.h”
  #include “myfun2.h”
  int myInt1;
  int myInt2;
  3.printf(“0x%x”, (&0)[&#61485;1]); 请问打印了什么?
  4.汇编,用ax,bx,cx,dx,求1000×1000/30(四舍五入),结果放在ax中。
  5.编最优化Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果
有序需要最优。
  6.用任意一种编程语言写n!的算法。
  2003 Asic部分
  1.一个四级的Mux,其中第二级信号为关键信号,如何改善timing?
  2.一个状态机的题目用Verilog实现。
  3.Asic中的design flow的实现。
  4.用逻辑门画出D触发器。
  5.给出某个一般时序电路的图,有Tsetup,Tdelay,Tck&#61485;>q还有clock的del
ay,写出决定最大时钟的因素,同时给出表达式。
  6.用C语言实现统计某个cell在某.v文件调用的次数。
  7.Cache的主要部分。
  2003 EE笔试题目
  1.写出电流公式。
  2.写出平板电容公式。
  3.电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C上电压和R上电
压,要求绘制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤
波器。当RC<<T时,给出输入电压波形图,绘制两种电路的输出波形图。
  4.给出时域信号,求其直流分量。
  5.给出一时域信号,要求写出频率分量,并写出其傅立叶变换级数。当波形经过低通
滤波器滤掉高次谐波而只保留一次谐波时,画出滤波后的输出波形。
  6.有一时域信号S=V0sin(2pif0t)+V1cos(2pif1t)+V2sin(2pif3t+90),写出当其通过
低通、带通、高通滤波器后的信号表示方式。
  7.给出一差分电路,告诉其输出电压Y+和Y&#61485;,求共模分量和差模分量。
  8.一电源和一段传输线相连(长度为L,传输时间为T),画出终端处波形,考虑传输
线无损耗。给出电源电压波形图,要求绘制终端波形图。
  9.求锁相环的输出频率,给了一个锁相环的结构图。
  10.给出一个堆栈的结构,求中断后显示结果,主要是考堆栈压入返回地址存放在低
端地址还是高端。
  2003 Graphic笔试题目
  1.问答题
  (1)texture mapping是什么?为什么要用filter?
  (2)用float和int表示一个数,比如2,说明优点和缺点。
  (3)在MPEG哪部分可以加速硬件?
  (4)解释cubic和B-spline的差别,写出各自函数。
  (5)写出几个Win API中的OpenGL函数。
  (6)说出固定小数表示和浮点小数表示的优缺点。
  (7)说出显卡可以优化哪些MPEG中的计算?
  (8)说出Bezier和B-Spline曲线的区别。
  2.用最简单的方法判断一个数是否是2的指数次幂。
  3.S23E8和S10E5两种浮点数表示方法分析,表示0.25写一个类S10E5,实现从S23E8转 换。
  4.用模版的方式实现三个量取最大值。
  5.题目告诉你IEEE 16和32浮点数表示的规范,要求将&#61485;0.25分别用IEEE 16和
32表示并写一个C++函数将输入的IEEE 16表示转化为IEEE 32的表示。
  6.用C语言写一个函数f(x)&#61501; x * 0.5要求只能用整数操作。
  2003 Software Engineer笔试题
  1. Describe x86 PC’s architecture in a diagram cpu,core chipset,
Cache,DR
AM, IO-subsystem, IO-Bus
  2. SWI instruction is often called a “supervisor call”, describe the
act
ions in detail
  * Save the address of the instruction after the SWI in rl4_svc.
  * Save the CPSR in SPSR_svc.
  * Enter supervisor mode and disable IRQs.
  * Set the PC to 08 and begin executing the instruction there.
  3.
  * What is PIO operation? advantage and disadvantage?
  * DMA operation? advantage and disadvantage?
  * Scatter/Gather DMA engine? how does it operate?
  4. MP3 decoder related. (a flow chart of decoding is presented)
  * advantages of Huffman encoding?
  * why the aliasing reduction is necessary?
  * analytical expression in mathematics of the IMDCT?
  * which block in the flow chart is suitable for the software
implementatio
n and which for the hardware? why?
  5. Assembly codes -> C language (about 15 lines).
  6. Graduation thesis description.
汉王笔试题
  高级研究人员(模式识别、图像处理类)招聘试题
  说明:
  可能您的专业并不完全符合本试题所涉及的领域。因此,并非所有的问题都需要回答
,您可以只回答你所熟悉和能够回答的问题。允许参考任意的资料,但请独立完成此试题
,我们更欣赏您独立的思考和创新的精神。本试题并非我们录用或者不录用您的惟一依据
。应聘高级研究人员者请回答这部分问题。
  1.人工智能与模式识别的研究已有多年,但似乎公认的观点认为它仍然非常困难。试
对你所熟悉的任一方向(如指纹识别、人像识别、语音识别、字符识别、自然语言理解等
)的发展状况进行描述。并设想如果你将从事该方向的研究,你打算如何着手,以建立有
效的识别理论和方法;或者你认为现在的理论和方法有何缺陷,有什么办法来进行改进?
(500字以内即可,不要太长)
  2.简述下面任一主题的主要理论框架或主要观点(500字以内即可,不要太长)
  (1)David Marr的视觉计算理论框架
  (2)格式塔(Gestalt)心理学派的主要观点
  (3)Bayes决策理论
  (4)人工神经网络中的BP网络、自组织网络和联想记忆网络的主要内容
  (5)基因算法
  (6)小波分析
  (7)目前流行的有损静态图像压缩方法
  3.设想你要设计一个算法,检测给定的图像中是否有矩形结构。所要检测的矩形可能
有多种形态,试提出你的算法框架。要求你的算法至少能检测出样本中的矩形,而拒绝其
他的任意非矩形结构。矩形的大小、位置和方向未知,要求你的算法能确定这些参数。
  如果你认为这个问题太难而不能解决,请说明理由。
  高级软件开发人员招聘试题
  说明:
  可能您的专业并不完全符合本试题所涉及的领域。因此,并非所有的问题都需要回答
,您可以只回答你所熟悉和能够回答的问题。允许参考任意的资料,但请独立完成此试题
,我们更欣赏您独立的思考和创新的精神。本试题并非我们录用或者不录用您的惟一依据 。
  应聘高级软件开发人员者请回答这部分问题。
  1.数据的逻辑存储结构(如数组,队列,树等)对于软件开发具有十分重要的影响,
试对你所了解的各种存储结构从运行速度、存储效率和适用场合等方面进行简要地分析。
  2.数据库技术是计算机系统中一个非常重要的领域,几乎所有的计算机应用中都或多
或少地用到了数据库。试简要地谈谈数据库设计中应当注意哪些问题,以及如何解决?给
出两种你所熟悉的DBMS,要求一种适用于小型应用,另一种适用于大型应用,给出你做出
选择的理由。
  3.某公司的主要业务是提供WWW和E-mail服务,出于安全考虑,该公司要求我公司提
供一套网络指纹登录系统,该系统要求能够利用指纹替代E-mail中常用的密码,并对所提
供的部分网页通过指纹认证后才能访问,请利用你所学过的知识对该系统进行分析设计,
你可以指定网络的配置(包括协议),但必须保证邮件用户既可通过网页(http方式)收
取信件,也可通过Outlook收取信件。请分析该系统的可行性,可行时给出系统结构和主要
的存储结构,指出系统中的难点和解决方法。(假设指纹识别的问题已经解决)
  高级硬件开发人员招聘试题
  说明:
  可能您的专业并不完全符合本试题所涉及的领域。因此,并非所有的问题都需要回答
,您可以只回答你所熟悉和能够回答的问题。允许参考任意的资料,但请独立完成此试题
,我们更欣赏您独立的思考和创新的精神。本试题并非我们录用或者不录用您的惟一依据 。
  应聘高级硬件开发人员者请回答这部分问题。
  1.下面是一些基本的数字电路知识问题,请简要回答:
  (1)什么是Setup和Holdup时间?
  (2)什么是竞争与冒险现象?怎样判断?如何消除?
  (3)请画出用D触发器实现2倍分频的逻辑电路。
  (4)什么是“线与”逻辑?要实现它,在硬件特性上有什么具体要求?
  (5)什么是同步逻辑和异步逻辑?
  (6)请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控
制接口、所存器/缓冲器)。
  (7)你知道哪些常用的逻辑电平?TTL与COMS电平可以直接互连吗?
  2.可编程逻辑器件在现代电子设计中越来越重要,请问:
  (1)你所知道的可编程逻辑器件有哪些?
  (2)试用VHDL或Verilog,ABLE描述8位D触发器逻辑
  3.设想你将设计完成一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计

包括原理图和PCB图)到调试出样机的整个过程。在各个环节应注意哪些问题?
北京信威通信技术股份有限公司面试题
  1.DSP和通用处理器在结构上有什么不同?请简要画出你熟悉的一种DSP结构图。
  2.说说定点DSP和浮点DSP的定义(或者说出他们的区别)。
  3.说说你对循环寻址和位反序寻址的理解。
  4.请写出【&#61485;8,7】的二进制补码和二进制偏置码。用Q15表示出0.5和&#614;
85;0.5。
中国国际金融有限公司CICC笔试题
  1. Please tell us about an achievement that you are especially proud of
be
cause it was difficult or demanding.
  (1)What the objective was?
  (2)Why it is important to you?
  (3)How you achieved it and the obstacles that you had to overcome in
ord
er to do so?
  2. What is your career plan? Three years after graduation, and five
years
after graduation?
  3. Why are you interested in investment bank? What other industries do
you
also have interests?
  4. Why do you think you can be a qualified investment banker? How can
you
contribute in this industry?
国泰君安笔试题
  一列火车上有三个工人,史密斯、琼斯和罗伯特,三人工作为消防员、司闸员和机械
师,有三个乘客与这三人的名字相同。罗伯特住在底特律;司闸员住在芝加哥和底特律中
间的地方;琼斯一年赚2万美金;有一个乘客和司闸员住在一个地方,每年的薪水是司闸员
的3倍整;史密斯台球打得比消防员好;和司闸员同名的乘客住在芝加哥。
  请问谁是机械师?
Briny笔试题
  1.说出RC振荡器的构成和工作原理。
  2.什么是SDH?
  3.什么是共模、差模?画出差分电路的结构。
  4.a=5; b=6; a+=b++; 执行结果是什么?
  5.什么是TDM?什么是CDMA?
  6.什么是采样定理?
  7.什么是香农定理?
  8.计算机的中断有哪几类?
广东北电面试题目
  英文笔试题
  1. Tranlation (Mandatory)
  CDMA venders have worked hard to give CDMA roaming capabilities via the
de
velopment of RUIM-essentially, a SIM card for CDMA handsets currently being
de
ployed in China for new CDMA operator China Unicom. Korean cellco KTF
demonstr
ated earlier this year the ability to roam between GSM and CDMA using such
car
ds.However,only the card containing the user’s service data can roam-not
the
CDMA handset or the user’s number (except via call forwarding).
  2. Programming (Mandatory)
  Linked list
  a. Implement a linked list for integers,which supports the insertafter
(in
sert a node after a specified node) and removeafter (remove the node after a
s
pecified node) methods;
  b. Implement a method to sort the linked list to descending order.
  3. Debugging (Mandatory)
  a. For each of the following recursive methods,enter Y in the answer box
i
f themethod terminaters (assume i=5), Otherwise enter N.
  static int f(int i){
   return f(i-1)*f(i-1);
   }
  Ansewr:
  static int f(int i){
   if(i==0){return 1;}
   else {return f(i-1)*f(i-1);}
   }
  Ansewr:
  static int f(int i){
   if(i==0){return 1;}
   else {return f(i-1)*f(i-2);}
   }
  Ansewr:
  b. There are two errors in the following JAVA program:
  static void g(int i){
   if(i==1){return;}
   if(i%2==0){g(i/2);return;}
   else {g(3*i);return;}
   }
  please correct them to make sure we can get the printed-out result as
belo
w:
  3 10 5 16 8 4 2 1
  中文笔试题
  1.汉译英
  北电网络的开发者计划使来自于不同组织的开发者,能够在北电网络的平台上开发圆
满的补充业务。北电网络符合工业标准的开放接口,为补充业务的开展引入了无数商机,
开发者计划为不同层面的开发者提供不同等级的资格,资格的划分还考虑到以下因素:补
充业务与北电网络平台的集合程度,开发者团体与北电网络的合作关系,等等。
  2.编程
  将整数转换成字符串:void itoa(int,char);
  例如itoa(-123,s[])则s=“-123”;
U2合唱团在17分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,
你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。一次同时最多可以有两人
一起过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端
。手电筒是不能用丢的方式来传递的。四个人的步行速度各不同,若两人同行则以较慢
者 的速度为准。Bono需花1分钟过桥,Edge需花2分钟过桥,Adam需花5分钟过桥,Larry需
花 10分钟过桥。他们要如何在17分钟内过桥呢?(有个同济的学生写文章说他当时在微软
面 试时就是碰到了这道题,最短只能做出在19分钟内过桥,微软的人对他讲这样的结果已
经 是不错的了!)
  A点到B点
  1和2过去 2分钟 2
  2过来 4分钟 2+2=4
  10和5过去 14分钟 4+10=14
  1过来 15分钟 14+1=15
  1和2过去 17分钟 15+2=17
  19分钟还很不错????
这是广州本田的试题,大家看一下
广州本田笔试题
  1.排序s-m-t-w-t-f-?
  2.如果六千,六百,六表示成6606,那么十一千,十一百,十一表示成什么?
  3.grass后面加一个词,agent前面加一个单词,组成两个新词,这个词是什么?
  4.农场不知道有多少鸡,现有一批饲料,如果卖掉75只鸡饲料够20天用,买进100
只 鸡饲料够用15天,问原来有多少只鸡?
  5.6个桶,装着两种液体,一种液体的价格是另外一种的double,桶容量为8,13,
15,17,19,31,有一个美国人,各用了14美元买两种液体,剩下一个桶。问剩下哪
个?
  6.篮球场,还剩6秒,差对手4分,没可能追得上,现在有一个暂停,你会怎么指导
球 员去做?
明基面试问题
  1.自我介绍(2分钟)。
  2.你大学期间最辉煌的一件事是什么?
  3.如果你明天去火星呆上300年,今天晚上你最想做的一件事是什么?
网易
  1、10个人分成4组 有几种分法?
  2、如图:
     7 8 9 10
     6 1 2 11
     5 4 3 12
     16 15 14 13
    设“1”的坐标为(0,0) “7”的坐标为(-1,-1) 编写一个小程序,使
程 序做到输入坐标(X,Y)之后显示出相应的数字。
  3、#include<stdio.h>
    //example input and output
    //in 1 2 3 out 1 3 1
    //in 123456789 2 100 out 123456789 100 21
    long mex(long a,long b,long c)
    { long d;
     if(b==0) return 0;
     if(b==1) return a%c;
     d=mex(a,b/2,c); d*=d;这里忘了;d*=mex(a,b%2,c);d%=c;
     return d;
    }
    int main(void)
    { long x,y,z;
     while(1)
     { if(scanf(%d %d %d,&x,&y,&z)>3) return 0;
     if(x<0) { printf("too small\n");continue;}
     if(y<0) { printf("too small\n");continue;}
     if(z<1) { printf("too small\n");continue;}
     if(y>z) { printf("too big\n");continue;}
     if(z>1000000010) {printf("too big\n");continue}
     printf(%d %d %d,x,z,mex(x,y,z);
    }}
    根据这个程序,当已知一个输入,算出输出,如:输入 1 3 1 则输出 1 2 3
输 入 123456789 100 21 输出 123456789 2 100

 

实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。
2.写一个函数,将其中的\t都转换成4个空格。
3.Windows程序的入口是哪里?写出Windows消息机制的流程。
4.如何定义和实现一个类的成员函数为回调函数?
5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
6.C++里面如何声明const void f(void)函数为C程序中的库函数?
7.下列哪两个是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
8.内联函数在编译时是否做参数类型检查?
void g(base & b){
b.play;
}
void main(){
son s;
g(s);
return;
}

1,程序设计(可以用自然语言来描述,不编程):C/C++源代码中,检查花括弧(是"("与
")","{"与"}")是否匹配,若不匹配,则输出不匹配花括弧所在的行与列。


2,巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且
首尾两数字之和也为一个素数。编程打印出所有的排法。


3,打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为"X",第二层为"Y",从第三层起每层依次打印数字0,1,2,3,...
例子:当N =5,打印出下面的图形:
 X X X X X
 X Y Y Y X
 X Y 0 Y X
 X Y Y Y X
 X X X X X
 

1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
  2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?
  3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
  4.请问C++的类和C里面的struct有什么区别?
  5.请讲一讲析构函数和虚函数的用法和作用。
  6.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
  7.8086是多少位的系统?在数据总线上是怎么实现的?
  
联想笔试题
  1.设计函数 int atoi(char *s)。
  2.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
  3.解释局部变量、全局变量和静态变量的含义。
  4.解释堆和栈的区别。
  5.论述含参数的宏与函数的优缺点。
c++最后几个大题目是
1,实现双向链表删除一个节点P,在节点P后插入一个节点,这两个函数。
2,写一个函数将其中的\t都转换成4个空格。
3,windows程序的入口是哪里?写出windows消息机制的流程。
4,如何定义和实现一个类的成员函数为回调函数。
还有前面的几个:
1. class A{
int a;
int b;
}
问的是编译时的default constructor function的问题。
还有一个说,A有其他自己定义的构造函数,问是否还有default constructor function
还是什么来着,记不清乐。
2. c++里面是不是所有的动作都是main()引起的?如果不是,请举例。
3. c++里面如何声明const void f(void)函数为C库函数?(这个我前几天还看来着,
居然就忘记乐, )
对了,还考乐一些关于const的问题
问下列哪两个是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
还有一个是考类的成员函数是 void f() const;型的时候调用的问题。
幸好昨天刚刚看乐这部分的内容,呵呵
内联函数考了一题,问内联函数在编译时是否做参数类型检查。
虚函数也考了一题,不过不难。
class base{
public:
virtual void play(){
cout<<"base";
}
}
class son: public base{
public:
void play(){cout<<"son";}
}
void g(base & b){
b.play;
}
void main(){
son s;
g(s);
return;
}
我所收集的intel比试题&面试题:
(熟悉大公司的题目,并不仅仅是为了进这些公司,而是很多国内公司考察内容都很接近而已.)
2005笔试 :
1。高效的内存管理
2。8皇后问题
面试q:
(2) 编译中的问题:全局变量如int i=5; int*(pf)()=foo; 分别在何时被初始化?设计时候如何具体的实现。
(3) OS相关的问题,内存访问,cache等(包括cache在整个系统中的位置,画出来,并解释)
(4) 解释例如mov ax,100H 这样一条指令的cpu, os, memory等都完成了什么样的工作。
(5) Strlen()的C语言实现,不能使用任何变量。
(6) 编译中display表的一些问题
(7) 一个hash函数,输入随机,现发生冲突,如数据集中在某几条中,问怎样处理hash函数保证高效的访问,怎样实现?
(8) 把Switch()case…语句翻译成三元组。
(9) 一个byte(用C语言实现计数其中1的个数),给出最高效的实现方法。(位域)或者查表最快的;
(10) 上海有多少个加油站?你是怎样解决这一问题?
(11) C语言参数的入栈顺序?为什么这么实现?
(12) 你的最大的优点和缺点分别是什么?
(13) C语言中字符串的翻转,最高效率(时间和空间)的实现?
2004
1. 三个float:a,b,c 问值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
2. 把一个链表反向填空
3. 设计一个重采样系统,说明如何anti-alias
4. y1(n)=x(2n), y2(n)=x(n/2),问:
如果y1为周期函数,那么x是否为周期函数
如果x为周期函数,那么y1是否为周期函数
如果y2为周期函数,那么x是否为周期函数
如果x为周期函数,那么y2是否为周期函数
5. 如果模拟信号的带宽为5KHZ,要用8K的采样率,怎么办。
4. 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统
(300M的CPU,50M的SDRAM)中运行,还需要优化吗?
5. x^4+a*x^3+x^2+c*x+d最少需要作几次乘法
6. 什么情况下,sin(x+y)+y ~ ....
7. 下面哪种排序法对12354最快
a quick sort
b.buble sort
c.merge sort
8. 哪种结构,平均来讲,获取一个值最快
a. binary tree
b. hash table
c. stack
1。 pipeline
2。 程序流程图题目
3。 哲学家进餐
4。 32bit,64bit,两个平台上complier,linker,os kernel,library,debuger的性质
5。 const char * vs char const * (?)
6。 GDT and LDT
7。 1+1<<1
8。 Stack性质
9。 ???
10。正方体中压力什么的。。。
大题
1。f[40,400],log10变换
2。ACPI
3。读程序
4。频谱,采样分析
大题
1。写出下列信号的奈亏斯特频率
(1)f(t)=1+cos(2000pait)+sin(4000pait)
(2)f(t)=sin(4000pait)/pait
(3)f(t)=(sin(4000pait)的平方)/pait
2.填程序
把一个计算m^n的程序填充完整
大概的意思是:
有一个全局数组char s[BUFSIZE]
利用这个数组计算,就是每个单元存放计算结果的一位,index小的存放低位,index大
的存放高位
3。有两个线程
void producer()
{
while(1)
{
GeneratePacket();
PutPacketIntoBuffer();
Signal(customer);
}
}
void customer()
{
while(1)
{
WaitForSignal();
if(PacketInBuffer>10)
{
ReadAllPackets();
ProcessPackets();
}
}
}
(1)有没有其他方法可以提高程序的性能
(2)可不可以不使用信号之类的机制来实现上述的功能
4。优化下面的程序
(0)sum=0
(1)I=1
(2)T1=4*I
(3)T2=address(A)-4
(4)T3=T2[T1]
(5)T4=address(B)-4
(6)T5=4*I
(7)T6=T4[T5]
(8)T7=T3*T5
(9)sum=sum+T6
(10)I=I+1
(10)IF I<20 GOTO (2)
1。关于c的main函数
2。15个人循环报数,报到N的出列,找出最后留下的那个人,算法填空题
2。找出一个给出的并行解决方案的错误情况
3。关于GPIO,intel的四种体系结构
选择题10题
有关vc和c,指针,HyporThreading Dual-core等等
看也看不懂的
2003年的
1:概率题。x,y为随机变量,联合概率密度 f(x,y) = intig(0,1)*dx*intig(0,x)*k*d
y,k为常数,求k=? E(xy)=?
注:intig(a,b)为a到b的定积分。
2:概率题。A,B为随机事件,以下哪个正确
A. P(A U B)*p(AB) <= P(A)P(B)
B. P(A U B)*p(AB) >= P(A)P(B)
C. P(A U B)*p(AB) <= P(A) + P(B)
D. P(A U B)*p(AB) >= P(A) + P(B)
3: 信道带宽200kHz,信噪比10dB,求信道波特率=?
4:以下代码运行结果是什么
int main()
{
int a,b,c,abc = 0;
a=b=c=40;
if(c)
{
int abc;
abc = a*b+c;
}
printf("%d,%d", abc, c);
return 0;
}
5:给出了从纽约出发和到达落山鸡的各种航班信息,写出找到一条从纽约到落山鸡的最
短距离的航班组合的代码。
6:从计算机图形上截取某个物体边缘的若干个坐标,求这个物体面积,并跟判断是方形
还是圆形,为啥。(坐标不记得,大概是个圆
)。
7:离散卷机与DFT的区别与关系。快速求不满足2^N长度的离散傅立叶变换的方法有哪些
?如何用fft求N*M点的离散卷机?
8:给出fir和iir的优缺点。
9:如何计算线性标量量化器的量化噪声?需要那些假设?

1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
2、如何输出源文件的标题和目前执行行的行数
3、两个数相乘,小数点后位数没有限制,请写一个高精度算法
4、写一个病毒
5、有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?
2005年腾讯招聘
选择题(60)
  c/c++ os linux 方面的基础知识 c的Sizeof函数有好几个!
程序填空(40)
1.(20) 4空x5
  不使用额外空间,将 A,B两链表的元素交叉归并
2.(20) 4空x5
MFC  将树序列化 转存在数组或 链表中!

 

1.请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

// 这样转向定义应该不算违规吧!^_^

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

 

#define Cmp(x,y) compare(x,y)

 

int compare(int a,int b)

{

     a^=(1<<31); b^=(1<<31);

     int i=31;

    while((i^-1) && !((a&(1<<i))^(b&(1<<i))))     i--;

     return (i^-1)?(((a>>i)&1)?1:-1):0;

}

 

int _tmain()

{

     int c;

     c = Cmp(5,4);

     cout<<c<<endl;

     return 0;

}

jruv   (~~~一叶落而知天下秋~~~) 的答案:

#define   COMPARE(a,b)   ((a)-(b))         //<0:   a<b   =0:a==b>0:a>b 

2.如何输出源文件的标题和目前执行行的行数

cout   <<   "Filename   "   <<   __FILE__   <<   "   Line   "   <<   __LINE__   <<   endl;

3.两个数相乘,小数点后位数没有限制,请写一个高精度算法

  算法提示:

         输入 string a, string b;计算string c=a*b; 返回 c;

1,   纪录小数点在a,b中的位置l1,l2, 则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2;

2,   去掉a,b中的小数点,(a,b小数点后移,使a,b变为整数)

3,   计算c=a*b; (同整数的大数相乘算法)

4,   输出c,(注意在输出倒数第l个数时,输出一个小数点。若是输出的数少于l个,就补0)

du51(郁郁思扬)的答案:


变为整数求就行了.输入的时候记一下,小数点位置..输出再做点文章就行了.
下面的是大整数的运算.
#include<iostream>
using namespace std;
#define MAX 10000
struct Node{
   int data;
   Node *next;
};
void output(Node *head)
{
   if(!head->next&&!head->data)return;
   output(head->next);
   cout<<head->data;
}
void Mul(char *a,char *b,int pos)        
{
   char *ap=a,*bp=b;
   Node *head=0;
   head=new Node;head->data=0,head->next=0;   //头
   Node *p,*q=head,*p1;
   int temp=0,temp1,bbit;
   while(*bp)                //若乘数不为空 ,继续.
   {
       p=q->next;p1=q;
       bbit=*bp-48;          //把当前位转为整型
       while(*ap||temp)            //若被乘数不空,继续
       {
           if(!p)            //若要操作的结点为空,申请之
           {
               p=new Node;
               p->data=0;
               p->next=0;
               p1->next=p;
           }
           if(*ap==0)temp1=temp;
           else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
           p1->data=temp1%10;    //留当前位
           temp=temp1/10;    //进位以int的形式留下.
           p1=p;p=p->next;                 //被乘数到下一位
       }
       ap=a;bp++;q=q->next;                //q进下一位
   }
   p=head;
   output(p);                   //显示
   cout<<endl;
   while(head)                 //释放空间
   {
           p=head->next;
           delete head;
           head=p;
   }
}
int main()
{
   cout<<"请输入两个数"<<endl;
   char test1[MAX],test2[MAX];
   cin.getline(test1,MAX,'\n');
   cin.getline(test2,MAX,'\n');
   Mul(strrev(test1),strrev(test2));
   system("PAUSE");
   return 0;
}
上面大整数已经写了.你加几个东西就行了.
#include<iostream>
using namespace std;
#define MAX 10000
struct Node{
   int data;
   Node *next;
};
void output(Node *head,int pos)
{
   if(!head->next&&!head->data)return;
   output(head->next,pos-1);
   cout<<head->data;
   if(!pos)cout<<".";
}
void Mul(char *a,char *b,int pos)        
{
   char *ap=a,*bp=b;
   Node *head=0;
   head=new Node;head->data=0,head->next=0;   //头
   Node *p,*q=head,*p1;
   int temp=0,temp1,bbit;
   while(*bp)                //若乘数不为空 ,继续.
   {
       p=q->next;p1=q;
       bbit=*bp-48;          //把当前位转为整型
       while(*ap||temp)            //若被乘数不空,继续
       {
           if(!p)            //若要操作的结点为空,申请之
           {
               p=new Node;
               p->data=0;
               p->next=0;
               p1->next=p;
           }
           if(*ap==0)temp1=temp;
           else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
           p1->data=temp1%10;    //留当前位
           temp=temp1/10;    //进位以int的形式留下.
           p1=p;p=p->next;                 //被乘数到下一位
       }
       ap=a;bp++;q=q->next;                //q进下一位
   }
   p=head;
   output(p,pos);                   //显示
   cout<<endl;
   while(head)                 //释放空间
   {
           p=head->next;
           delete head;
           head=p;
   }
}
int main()
{
   cout<<"请输入两个数"<<endl;
   char test1[MAX],test2[MAX],*p;
   int pos=0;
   cin.getline(test1,MAX,'\n');
   cin.getline(test2,MAX,'\n');
   if(p=strchr(test1,'.'))
   {
       pos+=strlen(test1)-(p-test1)-1;
       do
       {
           p++;
           *(p-1)=*p;
       }while(*p);
   }       
   if(p=strchr(test2,'.'))
   {
       pos+=strlen(test2)-(p-test2)-1;
       do
       {
           p++;
           *(p-1)=*p;
       }while(*p);
   }   
   Mul(strrev(test1),strrev(test2),pos);
   system("PAUSE");
   return 0;
}

4.写一个病毒

cout<<"一个病毒"<<endl;

(开玩笑的,没搞过,^_^)

 

5.让你在100000000个浮点数中找出最大的10000个,要求时间复杂度优。

//本算法使用快排,O(n*lg(n)) 

//最低可以找到线性算法,使用预先区域统计划分!类试于构造Quad Trees! 写起来代码会长些!

 

#include <stdio.h>

#include <stdlib.h>

 

#define Max 100000000

int a[Max+10];

 

int cmp(const void *a, const void *b)

{

     int *x = (int *) a;

     int *y = (int *) b;

     return *x-*y;

}

 

int main()

{

     int n=0;

     while(scanf("%d",&a[n])==1)     n++;

     qsort(a,n,4,cmp);

     for(int i=0;i<3;i++)     printf("%d",a[ i ]);

     return 1;

}

 

5、有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?

Solution:关键是时间最长的两个人必须同时过桥

The First Time:      A(1)和B(2)过桥,A(1)返回 Cost:1+2
The Second Time:   C(5)和D(10)过桥,B(2)返回 Cost:10+2
The Third Time     A(1)和B(2)过桥 Cost:2
Total Time Cost:   (1+2)+(10+2)+2=17 minutes

1.请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句  
  2.如何输出源文件的标题和目前执行行的行数  
  3.两个数相乘,小数点后位数没有限制,请写一个高精度算法  
  4.写一个病毒

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
对 于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函 数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
我们先看一看malloc/free和new/delete如何实现对象的动态内存管理,见下面示例。

class Obj
{
public :
    Obj(void){ cout << “Initialization” << endl; }
    ~Obj(void){ cout << “Destroy” << endl; }
    void Initialize(void){ cout << “Initialization” << endl; }
    void Destroy(void){ cout << “Destroy” << endl; }
};
void UseMallocFree(void)
{
    Obj  *a = (obj *)malloc(sizeof(obj));   // 申请动态内存
    a->Initialize();                        // 初始化
    //…
    a->Destroy();   // 清除工作
    free(a);        // 释放内存
}
void UseNewDelete(void)
{
    Obj  *a = new Obj;  // 申请动态内存并且初始化
    //…
    delete a;           // 清除并且释放内存
}


类Obj 的函数Initialize模拟了构造函数的功能,函数Destroy模拟了析构函数的功能。函数UseMallocFree中,由于 malloc/free不能执行构造函数与析构函数,必须调用成员函数Initialize和Destroy来完成初始化与清除工作。函数 UseNewDelete则简单得多。
所以我们不要企图用malloc/free来完成动态对象的内存管理,应该用new/delete。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。
既然new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。
如 果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”, 理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete必须配对使用,malloc/free也一样。

五大内存分区
    在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
    自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
    全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
    常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)
明确区分堆与栈
    在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。
    首先,我们举一个例子:
    void f() { int* p=new int[5]; }
    这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是: 在栈内存中存放了一个指向一块堆内存的指针p。在程序会先确定在堆中分配内存的大小,然后调用operator new分配内存,然后返回这块内存的首地址,放入栈中,他在VC6下的汇编代码如下:
    00401028   push        14h
    0040102A   call        operator new (00401060)
    0040102F   add         esp,4
    00401032   mov         dword ptr [ebp-8],eax
    00401035   mov         eax,dword ptr [ebp-8]
    00401038   mov         dword ptr [ebp-4],eax
    这里,我们为了简单并没有释放内存,那么该怎么去释放呢?是delete p么?澳,错了,应该是delete []p,这是为了告诉编译器:我删除的是一个数组,VC6就会根据相应的Cookie信息去进行释放内存的工作。
    好了,我们回到我们的主题:堆和栈究竟有什么区别?
    主要的区别由以下几点:
    1、管理方式不同;
    2、空间大小不同;
    3、能否产生碎片不同;
    4、生长方向不同;
    5、分配方式不同;
    6、分配效率不同;
    管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。
    空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M(好像是,记不清楚了)。当然,我们可以修改:   
    打开工程,依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后在Reserve中设定堆栈的最大值和commit。
注意:reserve最小值为4Byte;commit是保留在虚拟内存的页文件里面,它设置的较大会使栈开辟较大的值,可能增加内存的开销和启动时间。
    碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题, 因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块从栈中间弹出,在他弹出之前,在他上面的后进的栈内容已经被弹出,详细的 可以参考数据结构,这里我们就不再一一讨论了。
    生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。
    分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器进行释放,无需我们手工实现。
    分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比 较高。堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆 内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分 到足够大小的内存,然后进行返回。显然,堆的效率比栈要低得多。
    从这里我们可以看到,堆和栈相比,由于大量new/delete的使用,容易造成大量的内存碎片;由于没有专门的系统支持,效率很低;由于可能引发用户态 和核心态的切换,内存的申请,代价变得更加昂贵。所以栈在程序中是应用最广泛的,就算是函数的调用也利用栈去完成,函数调用过程中的参数,返回地址, EBP和局部变量都采用栈的方式存放。所以,我们推荐大家尽量用栈,而不是用堆。
    虽然栈有如此众多的好处,但是由于和堆相比不是那么灵活,有时候分配大量的内存空间,还是用堆好一些。
    无论是堆还是栈,都要防止越界现象的发生(除非你是故意使其越界),因为越界的结果要么是程序崩溃,要么是摧毁程序的堆、栈结构,产生以想不到的结果,就 算是在你的程序运行过程中,没有发生上面的问题,你还是要小心,说不定什么时候就崩掉,那时候debug可是相当困难的:)
    对了,还有一件事,如果有人把堆栈合起来说,那它的意思是栈,可不是堆,呵呵,清楚了?
static用来控制变量的存储方式和可见性
       函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此 函数控制)。

       需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。

       static的内部机制:
       静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。
       这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main()函数前的全局数据声明和定义处。
      静态数据成员要实际地分配空间,故不能在类的声明中定义(只能声明数据成员)。类声明只声明一个类的“尺寸和规格”,并不进行实际的内存分配,所以在类声 明中写成定义是错误的。它也不能在头文件中类声明的外部定义,因为那会造成在多个使用该类的源文件中,对其重复定义。
      static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间,静态
数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。消除时的顺序是初始化的反顺序。

       static的优势:
       可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的 值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

        引用静态数据成员时,采用如下格式:
         <类名>::<静态成员名>
    如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式
来引用静态数据成员。

       PS:
      (1)类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致
了它仅能访问类的静态数据和静态成员函数。
      (2)不能将静态成员函数定义为虚函数。
      (3)由于静态成员声明于类中,操作于其外,所以对其取地址操作,就多少有些特殊
,变量地址是指向其数据类型的指针 ,函数地址类型是一个“nonmember函数指针”。

      (4)由于静态成员函数没有this指针,所以就差不多等同于nonmember函数,结果就
产生了一个意想不到的好处:成为一个callback函数,使得我们得以将C++和C-based X W
indow系统结合,同时也成功的应用于线程函数身上。
      (5)static并没有增加程序的时空开销,相反她还缩短了子类对父类静态成员的访问
时间,节省了子类的内存空间。
      (6)静态数据成员在<定义或说明>时前面加关键字static。
      (7)静态数据成员是静态存储的,所以必须对它进行初始化。
      (8)静态成员初始化与一般数据成员初始化不同:
      初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆;
      初始化时不加该成员的访问权限控制符private,public等;
           初始化时使用作用域运算符来标明它所属类;
           所以我们得出静态数据成员初始化的格式:
         <数据类型><类名>::<静态数据成员名>=<值>
      (9)为了防止父类的影响,可以在子类定义一个与父类相同的静态变量,以屏蔽父类的影响。这里有一点需要注意:我们说静态成员为父类和子类共享,但我们有 重复定义了静态成员,这会不会引起错误呢?不会,我们的编译器采用了一种绝妙的手法:name-mangling 用以生成唯一的标志。


http://www.ppmy.cn/news/875678.html

相关文章

MaxDOS v5.8s 说明文件

MaxDOS v5.8s 说明文件 请使用光标键 → ←↑↓ 或 PageUp 和 PageDown 翻页,查看本说明.关注新版,意见建议请到 Http://Pzz.Cn 或 Http://MaxDOS.Net=============================================================================== MaxDOS v5.8s 更新如下:1.优化一些程序…

数据库设计方法和原则

数据库设计方法和原则 11 个重要的数据库设计规则 来源: 开源中国社区 英文原文&#xff1a; 11 Important Database designing rules 简介 在您开始阅读这篇文章之前&#xff0c;我得明确地告诉您&#xff0c;我并不是一个数据库设计领域的大师。以下列出的 11 点是我对自己…

003

(1) 启天应用优化后,哪些说法是正确的 ABCD 安装文件统一为一个版本,便于生产售后控制 硬盘保护支持独立百兆网卡(不支持独立千兆网卡) 解决在 SATA 硬盘和 137G 以上大硬盘上不能自动格式化的问题 网络同传不能使用大传小的方式 (

linux内核文档翻译之——V4L2-framework.txt V4L2 API Specification

http://blog.csdn.net/jmq_0000/article/details/7530575 V4L2驱动框架概述 这个文本文件讲述V4L2的框架所提供的各种结构和它们之间的关系.介绍 ------------由于硬件的复杂性v412驱动往往是非常复杂的&#xff1a; 大多数设备有多个IC&#xff0c;在/dev目录下有多个设备节点…

MySQL--入门篇:MySQL入门必会知识 Windows安装MySQL的zip包 一步一步带你图解安装MySQL过程 详细图解MySQL语句

阅读目录 数据和数据库MySQL介绍MySQL的详细安装教程Windows版本&#xff1a;MySQLl的安装、启动和基础配置下载 配置环境变量安装 和 启动MySQL服务端MySQL的卸载MySQL的Server端MySQL客户端 Linux版本&#xff1a;MySQLl的安装、启动和基础配置Mac版本&#xff1a;MySQLl的安…

IC验证之求学路

文章目录 前言第零章 那些总被遗忘的概念总线i 和 i的区别verilog中的for语句综合出什么格雷码和二进制码的转换 第一章 数电和verilog基础1.1 verilog 编程 常见错误1.2 同步FIFO1.2.1 Spec 1.3 异步FIFO1.3.1 设计理念1.3.2 异步FIFO的作用1.3.3 异步FIFO的读/写指针1.3.4 异…

算法编程

MT1 最大差值 链接 最大差值_牛客题霸_牛客网 (nowcoder.com) 描述 有一个长为 $n$ 的数组 $A$, 求满足 $0 \leq a \leq b<n$ 的 $A[b]-A[a]$ 的最大值。 给定数组 $A$ 及它的大小 $n$ &#xff0c;请返回最大差值。 数据范围: $2<n \leq 2 * 10^5$ &#xff0c;数组…

HTML+CSS+JavaScript:一张九九乘法表的诞生过程

一、需求如图 二、思路及代码 1、JavaScript代码 稍微刷过一点算法题的小伙伴就很容易想到这题需要利用双层for循环来实现&#xff0c;思路也是比较简单的&#xff0c;我在这里就直接放代码了 不添加CSS渲染的代码如下 <!DOCTYPE html> <html lang"en"&…