首页 > 就业 > 笔试

腾讯实习生招聘笔试题目以及答案

腾讯实习生招聘笔试题目以及答案



腾讯实习生招聘笔试题目以及答案

  · 32 位机上根据下面的代码,问哪些说法是正确的?

  1. signed char a = 0xe0;

  2. unsigned int b = a;

  3. unsigned char c = a;

  A. a>0 && c>0 为真 B. a == c 为真 C. b 的十六进制表示是:0xffffffe0 D. 上面都不对

  · 下面哪些选项能编译通过?

  1. int i;

  2. char a[10;

  3. string f();

  4. string g(string &str);

  A. if(!!i){f();} B. g(f()); C. a=a+1; D. g("abc");

  · int a[10]; 问下面哪些不可以表示 a[1] 的地址?

  A. a+sizeof(int) B. &a[0]+1 C. (int*)&a+1 D. (int*)((char*)&a+sizeof(int))

  ·

  · 问下面的数据都存放在哪些存储区?

  1. int main()

  2. {

  3. char *p = "hello,world";

  4. return 0;

  5. }

  A. ... B. ... C. 栈和常量区 D. 栈和堆

  分析:"hello,world" 是常量,赶脚应该就是 C 吧,应该大家感觉都一样。这里不涉及什么堆的事。

  · 假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

  1. #include

  2. int main()

  3. {

  4. long long a = 1, b = 2, c = 3;

  5. printf("%d %d %d\n", a, b, c);

  6. return 0;

  7. }

  A. ... B. ... C. ... D. ...

  分析:貌似问题没有想的那么简单。如果说运行结果,很简单,有人是 1 0 2;有人是 1 2 3。涉及到 little/big endian 和参数入栈的问题。

  · 下面哪些函数调用必须进入内核才能完成?

  A. fopen B. exit C. memcpy D. strlen

  ·

  分析:有些无能为力。A 是要打开文件的,貌似涉及很多内核操作;exit 是退出进程,结束进程,应该也要深入内核。memcpy ,me 一直犹豫用户区的数据拷贝要不要通过内核。strlen me 感觉关系不大。

  ·

  · 内存管理中的 LRU 方法是用来管理神马的?

  A. 虚拟内存的分配 B. 虚拟内存的释放 C. 物理内存的分配 D. 物理内存的释放

  ·

  分析:貌似是用来管理物理块的,后面的填空题正好有说,O__O"…

  ·

  · 关于DMA 的说法,哪些是错误的?

  A. DMA,Direct Memory Acess 直接存储器访问,使得不同速度的硬件设备可以直接通信,不通过 CPU 干预;

  B. DMA 访问的时候需要从 CPU 那里夺得总线控制权,然后...

  C. DMA 速度快;

  D. DMA 不需要中断控制,...

  ·

  · 死锁发生的必要条件?

  A. 互斥条件 B. 请求和保持 C. 不可剥夺 D. 循环等待

  ·

  分析:ABCD 就是死锁的四个必要条件,操作系统书上貌似说的很明确。

  ·

  · 有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?

  A. 1 B. 2 C. 3 D. 4

  ·

  分 析:D 顺序执行以下,就可以。B 的话,让后面一个执行到+2,但不要写结果,然后前一个执行完,然后写结果,为 2。C 3 的话,也好分析。A 不可能!肿么可能呢?肿么可能结果只为 1 呢?两个线程都会 +2,+1 何从谈起?先 +1,然后让后面的加法错了,然后结果写进去?前一个 ++n 都没执行的话,后一个又肿么会执行呢?总之不可能是 1 !不可能!O__O"…(坚决不相信它可以。)

  ·

  · 下面哪些说法正确?

  A. 数组和链表都可以随机访问

  B. 数组的插入和删除可以 O(1)

  C. 哈希表么法范围检查

  D. ...

  ·

  分 析:总之 ABD 给人的感觉是显而易见的错丫,有木有,所以排除法还是能用的!至于 hash 结构,确实也不可以范围检查,因为 key 映射为 value,根据的`是 hash 函数,而这个函数一般不满足原来的单调性,实际上就不应该满足!因为 hash 函数的设计是要 value 的映射尽可能滴随机、均匀!

  ·

  · 基于比较的排序的时间复杂度下限是多少?

  A. O(n) B. O(n^2) C. O(nlogn) D. ...

  ·

  分析:貌似是数据结构上面的一个结论,基于比较的排序的时间复杂度不能比 O(nlogn) 低,而快速排序平均复杂度就是 O(nlogn),而且常量系数更低一些。

  ·

  · 下面图的拓扑排序可能是?

  A...

  ·

  分析:对于知道拓扑排序的,应该很容易作答(me 有时候在怀疑自己理解的是否正确?!)。

  ·

  · 求 n 个数中的最大值和最小值,最少的比较次数是?

  A. 4n/3 B. 2n-2 C. n-1 D. 3n/2

  ·

  分 析:虽然 me 不知道很高深的算法,但是 me 想丫,如果是 2 1 3 4 5 6 这样的序列,u 认为最少是多少次呢?me 感觉是 n-1 。但是,题目也许是另外一个意思,也就是对于普通的序列,求最大值和最小值,能将比较次数降到多少?(me 貌似见到过一些方法,但是忘了,O__O"…)

  ·

  · 一棵二叉树的先序遍历是 f b a c d e g h,中序遍历是 a b d c e f g h,问后序遍历是神马?

  A. ... B. ... C. ... D. ...

  ·

  分析:构建二叉树,然后看看后序遍历是神马?a d e c b h g f,O__O"…,突然感觉一不小心 g f 和 f g 就写反了,me 应该没有吧?!

  ·

  · 网卡、交换机、路由器和 UDP 分别工作网络的哪些层?

  A. ...

  B. ...

  C. ...

  D. ....

  ·

  分析:只根据 UDP 在传输层,me 就选出答案了:物理层、数据链路层、网络层和传输层。

  ·

  · 子网掩码 25..255.255.224 可以将网络 x.x.x.x 分成多少个子网?

  A. ... B. ... C. 8 D. 32

  ·

  分 析:224 = 128+64+32 = 1110 0000 B,me 一看,后面 5 个 0 ,就是 2^5 = 32 吧?shit !子网数?不是主机数丫,有没有,O__O"…,主机数貌似还得 -2 丫,有没有,当时 me 还奇怪来着,O__O"… x.x.x.x 貌似是个 C 类地址?这样的话,应该是 2 ^ 3 = 8 !

  ·

  · TCP协议栈的定时器有哪些?

  A. ... B. ... C. ... D. ...

  ·

  分析:不会的路过。

  ·

  · 高内聚和低耦合,下面哪个耦合度最高?

  A. 通过函数参数传递...

  B. 一个函数修改另外一个函数中的数据;

  C. 通过全局变量...

  D. 通过指示器...

  ·

  分析:哭丫,me 错了。这是软件工程上的玩意,me 一直认为 C 比 B 耦合度高呢,O__O"…。耦合度由低到高:A --> D --> C -->B

  ·

  · 关于访问 http://ilovers-drupal.stor.sinaapp.com/public/field/image/000631.jpg ,下面哪些是后台绝对不会执行的?

  A. 本地查查 DNS,是否有 sinaapp.com 的 ip;

  B. 通过 cn. 查找 ip;

  C. 通过 com. 查找 ip;

  D. 浏览器发送 http get 请求;

  D. 服务器回送 xxx.jpg;

  ·

  分析:蒙也是蒙 B,O__O"…

  ·

  · 在一个 big endian 的 32 位的计算机上,b 的结果是?(该处 1 个空)

  1. unsigned int a = 0x1234;

  2. char b = *((char*)&a);

  分析:想不到又一个 big/little endian 的问题。这个结果,me 还比较确定写,就是 0。uint 是 4 个字节,0x1234 的完整表示是 0x 00 00 12 34,因为是 big endian,所以,所以 &(取地址) 的话,如果当字节看的话,取到了最左边 00 字节的地址,一定要转换成 char 看的话,值就是 0 。

  · 一个有 800 个结点的完全二叉树,问有多少个叶子结点?(该处 1 个空)

  分析:虽然 me 忘记是神马公式计算了,只感觉和 n/2 有关系。然后随便画了几个试试,就可以找出来 (n+1)/2 的规律来,所以 答案是: 400。

  ·

  · 下面 get 是求一个二维数组元素的函数,请补全。( 1 个空)

  1. #include

  2. #include

  3. #define M 3

  4. #define N 4

  5.

  6. int get(int *a, int i, int j)

  7. {

  8. int v;

  9. if(a == NULL || i<0 || i>=M || j<0 || j>=N) exit(1); //

  10.

  11. v = *(a+i*N+j); // 这里有一个空

  12. return v;

  13. }

  14. int main()

  15. {

  16. int a[M[N = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

  17. int v;

  18.

  19. v = get(a, 2, 1);

  20. printf("a[2][1] == %d\n", v );

  21. return 0;

  22. }

  分析:差点写错了,还好迷途知返了,O__O"…

  · 补全插入排序:(有 2 个空)

  1. int insert_sort(int *p, int count)

  2. {

  3. int i, j, tmp;

  4. if(p == NULL || count < 0) return 0; //

  5. for(i=1; i

  6. tmp = p[i];

  7. j = i-1;

  8. while(j>=0 && p[j]>tmp){ // 此处判断条件一个空

  9. p[j+1]= p[j];

  10. --j;

  11. }

  12. p[j+1] = tmp; // 此处一个空

  13. }

  14. return 1;

  15. }

  16. int main()

  17. {

  18. int i, a[10] ={3, 2, 1, 7, 8, 10, 4, 5, 6, 9};

  19. insert_sort(a, 10);

  20. for(i=0; i<10; i++)

  21. printf("%d ", a[i]);

  22. printf("\n");

  23. return 0;

  24. }

  分析:me 感觉 me 的代码还是比较工整的,u 肿么看,...

  · 使用 FIFO 管理页面请求,如果分配的物理块 M = 3 或是 4,请求顺序如下:4 3 2 1 4 3 5 4 5 3 1 2 5 1 5 1 5 5 4,问两种情况下页面失效的次数各是多少?( 2 个空)

  分析:7 和 7,这是 me 的结果(貌似错了?O__O"…)。现在是确信,自己错了,答案是 10 和 11,me 没有加上来就没有命中的 3/4 次,虽然没有页面替换,但是确实属于页面失效的情况。每空 4 分,两个 8 分,me 还有神马好说的呢,O__O"…(大哭ing...)。

  ·

  下面给出计算结果,如果没有命中,就打一个 x,然后写上页面的值,~~~~(>_<)~~~~

  · M = 3 (从上往下,从左往右看):10 次x4 x1 x5 x4x3 x4 x1x2 x3 x2M = 4 (从上往下,从左往右看):11 次x4 x5 x1x3 x4 x5x2 x3 x4x1 x2

  · 一个网络图,问 Q 路由器到某个网络要进行跳转的下一个 ip 是多少?(有 1 个空)

  分析:me 一下子就犹豫了,貌似赶脚也不是正确答案,就不多说了。

  ·

  · 软件可靠性评估的两个指标是神马?( 2 个空)

  分析:不会的路过。

  ·

  · 选做 1:qq 用户有 30 亿,每日的登陆、登出的记录条数有 100 亿之多,让设计程序统计每天登陆人数;设计程序剔除因为掉线而重复登陆的情况;设计程序求出在线人数最高的时刻。

  · 选做 2:问 qq 的加好友功能可能存在的安全漏洞有哪些?

相关内容

热门阅读
随机推荐