下面是我在参加2013年腾讯实习生招聘的笔试题目,当然啦,我个人不可能是完全的记住所有题目,部分是摘自网络的。同时,下面也有一些题目我不会的,希望大家一起商量解决给以答案,谢谢。
32位机上根据下面的代码,问哪些说法是正确的?()
signed char a = 0xe0;
unsigned int b = a;
unsigned char c = a;
A. a>0 && c>0 为真
B. a == c 为真
C. b 的十六进制表示是:0xffffffe0
D.上面都不对
答案:C
考点:有符号数和无符号数之间的转换
解析:
下面哪些选项能编译通过?
int i;
char a[10];
string f();
string g(string &str);
A. if(!!i){f();}
B. g(f());
C. a=a+1;
D. g("abc");
答案:A
考点:C++的细节掌握。
解析:
int a[10]; 问下面哪些不可以表示 a[1] 的地址?
A. a+sizeof(int)
B. &a[0]+1
C. (int*)&a+1
D. (int*)((char*)&a+sizeof(int))
答案:A
考点:C++数组的指针表示形式的掌握
解析:
问下面的数据都存放在哪些存储区?
int main()
{
char *p = "hello,world";
return 0;
}
A. 堆和静态数据区
B. 栈和静态数据区
C. 栈和常量区
D. 栈和堆
答案:C
解析:其实,在做这一题的时候,我是当成Java来做的,呵呵
4)下面哪些说法正确?()
A. 数组和链表都可以随机访问
B. 数组的插入和删除可以 O(1)
C. 哈希表没有办法做范围检查
D. 以上说法都不正确
答案:B
解析:
基于比较的排序的时间复杂度下限是多少?()
A. O(n)
B. O(n^2)
C. O(nlogn)
D. O(1)
答案:C
解析:其实大家记住这个结论就好,在当前计算机科学界对于基于比较的排序最快只是O(n*logn),例如快速排序,堆排序,归并排序
有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?()
A. 1
B. 2
C. 3
D. 4
答案:BCD
解析:大家要知道 C语言中的 ++ 和 += 并不是原子操作,而是通过多条微程序组成的,因此 ++ 和 += 在执行过程中可能被中断的
下面哪些函数调用必须进入内核才能完成?()
A. fopen
B. exit
C. memcpy
D. strlen
答案: AB
解析:
死锁发生的必要条件?()
A. 互斥条件
B. 请求和保持
C. 不可剥夺
D. 循环等待
答案:ABCD
考点:操作系统,刚刚学,好兴奋这题当时做的,一秒钟都不用瞬间选择了【偷笑】
解析:互斥条件,请求和保持,不可剥夺 ,循环等待,这些都可能导致发生死锁,所以以后大家在做多线程程序时一定要注意了。
内存管理中的 LRU 方法是用来管理什么的?()
A. 虚拟内存的分配
B. 虚拟内存的释放
C. 物理内存的分配
D. 物理内存的释放
答案:AD
考点:操作系统
解析:今天下午认真看了下课本,温故了下知识,关于这题,得出以下几个解释,详细的我就不说啦,大家自己看书,我大概说下基本的。
1.页面调入:是给页面调入内存中,给它分配物理内存
2.页面置换,就是将内存中的页面置换出来,放到虚拟内存中,让物理内存空闲出来,让给需要使用的页面。
3.LRU:全称是:Least Recently Used(最近最久未使用)置换算法,所以这个算法涉及到了虚拟内存的分配和物理内存的释放。所以答案是AD。
求N个数中的最大值和最小值,最小比较次数是多少?
A 4n/3
B 2n-2
C n-1
D 3n/2
答案:D
解析:在一本书上看过,利用分治思想,评论中有@LPopo提供的不用分治法实现的代码,在九楼。在此表示感谢。
一棵二叉树的先序遍历是 f b a c d e g h,中序遍历是 a b d c e f g h,问后序遍历是什么
答案:adecbhgf
解析:根据先序遍历和中序遍历,我们可以构建一颗二叉树:
在32位little endian机器上运行该程序,得到结果是什么?
#include <stdio.h>
int main()
{
long long a = 1, b = 2, c = 3;
printf("%d %d %d \n", a, b, c);
return 0;
}
A.1 2 3
B 1 0 2
C ......
D 3 2 1
答案:B
解析:因为long long 是8个字节的,%d是4个字节的,溢出覆盖了后面,然后又是小端规则的。
【传入参数,由右往左,栈空间内存从高往低,little endian, 栈空间如下: 内存高位-> 00000000 00000011 00000000 [00000010](c) [00000000](b) [00000001](a) <-内存低位 因此printf会按照4bytes取参数. 】来自http://bbs.csdn.net/topics/390424969?page=1#post-394210570第33楼的回复
关于访问,下面哪些是后台绝对不会执行的?
A. 本地查查 DNS,是否有 sinaapp.com 的 ip;
B. 通过 cn. 查找 ip;
C. 通过 com. 查找 ip;
D. 浏览器发送 http get 请求;
E. 服务器回送 xxx.jpg;
答案:。。。不会,我当时蒙的,好像选的是E。。。
解析:不会,自然解析不了。。。
高内聚和低耦合,下面哪个耦合度最高?
A. 通过函数参数传递...
B. 一个函数修改另外一个函数中的数据;
C. 通过全局变量...
D. 通过指示器...
答案:网上说答案是C,我也不是很清楚。。
解析:
TCP协议栈的定时器有哪些()
A....
B....
C....
D....
答案:忘记选项了,网上也找不到,大家知道有考这个知识点就好啦。。。
解析:百度了一下,TCP协议栈的定时器有延时定时器,重传定时器,坚持定时器,保活定时器
网卡,交换机,路由器和UDP分别工作网络的哪些层?
答案:依次是:物理层,链路层,传输层
在一个 big endian 的 32 位的计算机上,b 的结果是______
unsigned int a = 0x1234;
char b = *((char*)&a);
答案:0
解析:
unsigned int是 4 个字节,0x1234 的完整表示是 0x 00 00 12 34,因为是 big endian,所以,所以 &(取地址) 的话,如果当字节看的话,取到了最左边 00 字节的地址,一定要转换成 char 看的话,值就是 0。
一个有 800 个结点的完全二叉树,问有_____个叶子结点?
答案:400
解析:画图举例子很容易就可以推导出规律,通过这个公式即可计算得400
下面 get 是求一个二维数组元素的函数,请补全.
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 4
int get(int *a, int i, int j)
{
_______ // 此处一个空
}
int main()
{
int a[M][N] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int v;
v = get(a, 2, 1);
printf("a[2][1] == %d\n", v );
return 0;
}
答案:return *(a+i*N+j);
解析:大家注意原型中的指针是int* a,所以必须用二维数组在内存中是一维排布这个知识点来做,直接 return *(a+i*N+j);而不是 return *(*(a+i)+j);
补全插入排序:
#include <stdio.h>
#include <stdlib.h>
int insert_sort(int *p, int count)
{
int i, j, tmp;
if(p == NULL || count < 0) return 0; //
for(i=1; i<count; i++){
tmp = p[i;
j = i-1;
while(__________){ // 此处一个空
p[j+1] = p[j];
--j;
}
___________; // 此处一个空
}
return 1;
}
int main()
{
int i, a[10 = {3, 2, 1, 7, 8, 10, 4, 5, 6, 9};
insert_sort(a, 10);
for(i=0; i<10; i++)
printf("%d ", a[i);
printf("\n");
return 0;
}
答案:第一个空: j>=0 && p[j>tmp 第二个空:p[j+1] = tmp;
解析:看看数据结构的课本就有啦,呵呵
使用 FIFO 管理页面请求,如果分配的物理块 M = 3 或是 4,请求顺序如下:4 3 2 4 4 3 5 4 5 3 1 5 1 5 1 5 4,问两种情况下页面失效的次数各是________和__________?
答案:首先感谢@ LPopo的解答,答案是9和6,
考点:操作系统
解析:M=3时:一开始是空的,所以4,3,2都页面失效。失效三次,然后4,4,3都有效,5失效一次,4先进来的所以先出去,变为3,2,5,然后4又失效一次,3出去,变为2,5,4,以此类推。就是先进来的先出去。最后加起来一共9次。M=4的也一样。只是能多存一个页。
软件可靠性评估的两个指标是___________和_____________?
答案:不会。。。
参考网站:
Coding Life的专栏:http://blog.csdn.net/bobo823679351/article/details/8820813
lyj103862095的专栏 :http://blog.csdn.net/lwj103862095/article/details/8815967