用户名:
密码:
类型:
注册
 设为首页   加入收藏   联系我们
 
 
 
环渤海建材网

招聘企业

招聘职位

日期
唐山鑫淼金 电工兼职IT 2013/3/30
唐山创元教 网站推广 2013/2/17
唐山创元教 网站编辑 2013/2/17
唐山瑞津酒 酒店实习生 2012/12/14
哈尔滨哈飞 钳工 2012/8/20
劳联环球国 诚聘装配工 2012/8/4
滦县友朋汽 汽车维修技师 2012/7/15
河北元道通 移动基站维护 2012/6/26
唐山水峰商 店面销售 2012/6/19
      您的位置:唐山技校网>> 精选题库 >>IT公司笔试题总结(一)——北大青鸟


IT公司笔试题总结(一)——北大青鸟

已阅[3432]次[2012/10/17]

      北大青鸟为你总结了一些IT公司笔试题

  1. 引用与指针有什么区别? 
  1) 引用必须被初始化,指针不必。 
  2) 引用初始化以后不能被改变,指针可以改变所指的对象。 
  3) 不存在指向空值的引用,但是存在指向空值的指针。 

  2. 堆栈溢出一般是由什么原因导致的? 
  没有回收垃圾资源。 

  3. 什么函数不能声明为虚函数? 
  constructor函数不能声明为虚函数。 

  4. 写出float x 与“零值”比较的if语句。 
  if(x>0.000001&&x<-0.000001) 

  5. 不能做switch()的参数类型是: 
  switch的参数不能为实型 

  6. 头文件中的 ifndef/define/endif干什么用? 预处理 
  答:防止头文件被重复引用 

  7. #include <filename.h> 和 #include "filename.h" 有什么区别? 
  答: 
  对于#include <filename.h> ,编译器从标准库路径开始搜索filename.h 
  对于#include "filename.h" ,编译器从用户的工作路径开始搜索filename.h 

  8. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明? 
  答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。 

  9. 

  char str1[] = "abc"; 
  char str2[] = "abc"; 

  const char str3[] = "abc"; 
  const char str4[] = "abc"; 

  const char *str5 = "abc"; 
  const char *str6 = "abc"; 

  char *str7 = "abc"; 
  char *str8 = "abc"; 

  cout << ( str1 == str2 ) << endl; 
  cout << ( str3 == str4 ) << endl; 
  cout << ( str5 == str6 ) << endl; 
  cout << ( str7 == str8 ) << endl; 

  结果是:0 0 1 1 

  str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 

  10. 

  main() 
  { 
  int a[5]={1,2,3,4,5}; 
  int *ptr=(int *)(&a+1); 
  printf("%d,%d",*(a+1),*(ptr-1)); 
  } 

  答:2,5 

  *(a+1)就是a[1],*(ptr-1)就是a[4], 执行结果是2, 5。&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)。int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5 

  原因如下: 

  &a是数组指针,其类型为 int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同; a是长度为5的int数组指针,所以要加 5*sizeof(int)。所以ptr实际是a[5]。但是prt与(&a+1)类型是不一样的(这点很重要),所以prt-1只会减去sizeof(int*)。a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5]。 

  11. 交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3; 

  答:有两种解法, 一种用算术算法, 一种用^(异或) 

  a = a + b; 
  b = a - b; 
  a = a - b; 

  or 

  a = a^b;// 只能对int,char.. 
  b = a^b; 
  a = a^b; 

  or 

  a ^= b ^= a; 

  12. 列举几种进程的同步机制,并比较其优缺点。 
  答:原子操作、信号量机制、自旋锁、管程、会合、分布式系统 

  13. 进程死锁的原因和4个必要条件 
  答:资源竞争及进程推进顺序非法;互斥、请求保持、不可剥夺、环路 

  14. 要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做? 

  答:*((void (*)( ))0x100000 ) ( ); 

  首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000。然后再调用它: *((void (*)())0x100000)(); 用typedef可以看得更直观些: 
  typedef void(*)() voidFuncPtr; 
  *((voidFuncPtr)0x100000)(); 

  15. 
  unsigned char *p1; 
  unsigned long *p2; 
  p1=(unsigned char *)0x801000; 
  p2=(unsigned long *)0x810000; 

  请问 
  p1+5=______; 
  p2+5=______; 

  答案:801005;810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14 

  16、设有以下说明和定义: 
  typedef union {long i; int k[5]; char c;} DATE; 
  struct data { int cat; DATE cow; double dog;} too; 
  DATE max; 

  则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______ 

  答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 
  data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 
  所以结果是 20 + 32 = 52. 

  当然...在某些16位编辑器下, int可能是2字节,那么结是 int2 + DATE10 + double8 = 20


  

  学校地址:唐山市路北区华北煤炭医学院西校区篮球场以南,北大青鸟(唐山弘基)授权培训中心。

  乘车路线:市内乘7、16、61、41、114、35、77路等建设路沿线公交车均可到达,煤医道口站下车

  联系电话:15132527389   13832811994

  联系QQ:736798197


关键词:唐山,北大青鸟,IT



 上一条:IT公司笔试题总结(二)——北大青鸟 下一条:东波威娜——职场新手化妆技巧

相关信息

·唐山北大青鸟学校怎么样?

·唐山北大青鸟学校报名条件是什么?

·唐山北大青鸟学校的地址在哪?乘车路线?招生电话多少?

·唐山北大青鸟网络工程师4大就业优势

·北大青鸟让你学习零无忧

更多 精选题库

技校 | 关于技校网 | 技校网广告服务| 技校网汇款信息 | 技校网会员服务 | 技校网免责声明 |
CopyRight 2009-2010 All rights reserved 版权所有 唐山创元教育咨询有限公司 未经允许 请勿复制或镜像 技校网备案序号: 冀ICP备11020808号-5 冀公网安备 13024002000223号
电话:400-808-8566 传真:0315-3859044
400-8088-566 0315-3859044 工作日:8:00-21:30
周六日:8:00-21:30