2014年腾讯广研创新班笔试题(回忆版)
1.编程题。
数制转换的问题,A=1,B=2,C=3....Z=26,AA=27,输入一个字符串(ACDEDS)输出结果。
2.A,B两个人玩游戏,A写下一个【1,100】的数,让B来猜,如果B猜小了,那么A会告诉他猜小了,但是一旦某一次B猜大了,A就不再提示了,只是告诉B猜对了没有,请问B应该采用什么策略来猜,最少猜多少次,第一次应该猜几。
3.Ackerman函数问题,网上有递推。要求ACK(3,3)。
4.求数组子数组最大和(填空题,见编程之美).
5.二分查找(填空题)
6.catalan数,问的是进栈的顺序是1,2,3,4,5问合法的出栈序列有多少个。
技术性问题: 1. 一个n×n的二维数组,原地顺时针旋转90度,注意是原地哦,就是不能申请其它的空间。 2. 判断单链表是否有环,这个问题相信大家都会啦,不过要注意循环终止条件及最终结果什么的,注意细节。 3. 一个含有10亿个整数的日志文件,查找指定的数是否在这个文件中。面试官总是强调是整数而不是字符串、浮点数什么的。 4. linux下有个日志文件,里面的格式如下: uid date 1 2013-8-23 2 … 2 … 1 … 1 … 4 … ... 用shell命令统计出Top k个活跃用户。 5. 给你一个程序,下面是伪代码: if(该房间空闲) 占用 else
失败
问:会不会出现两个请求同时占用同一个房间?是的话怎么解决这样的问题?
1.一个序列BCGHFED,按字母表顺序排列,给出第一轮快排的结果
2.什么是面向对象的多态性?是通过什么机制实现的?请举例说明。
3.什么是sql注入?举例。怎样防止sql注入?
4.一个很长的linux shell命令。说明这个命令的意思
5.给一个入户log in, log out的日志,统计在线用户数。
[2009年1月1日 12:00:00] a login
[2009年1月1日 12:00:01] b login
[2009年1月1日 12:00:05] c login
[2009年1月1日 12:00:09] a logout
[2009年1月1日 12:00:15] c logout
[2009年1月1日 12:00:45]a login
15+20两道程序题
6.printf的原型 , 指向某函数的函数指针的声明
7.用非循环的方式得到一个32位整数的值为1的倍数。
给出程序。填空
int count(int num)
{
int dic[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,2,4};
return dic[ 填空] + dic[ 填空] + dic[ 填空] + dic[ 填空]
+ dic[ 填空] + dic[ 填空] + dic[ 填空] + dic[ 填空] ;
}
8、找错:局部变量、内存释放、malloc返回值为void*、内存泄露
20*2两道设计题
9.并发>10k的服务器,对于每个用户请求返回小于60个字节的日志。求实现方案。
10.前台cgi与后台server通过TCP交互频繁,有什么解决方案?该方案有什么优缺点?
6. 两个用户通信,用户A如果要给用户B发送信息,他怎么做到,过程是怎样的? 7. 数据库事务相关的问题,比如事务隔离级别 8. session的工作原理,因为我以前做过Java web相关的项目,所以问到了这些问题。 非技术问题: 给你一个5L的桶和一个6L的桶,怎么得到3L的水。
先说下360笔试题的特点:题量多、注重基础、90%都是客观题(选择题)、非技术性问题占到了一定的比例(考察逻辑判断及推导能力),当然少不了一些安全或漏洞分析等主观题。下面是我觉得有价值的笔试题,未列出来的都是比较简单的大家基本都会的,列出来也没啥意义。
客观题
1. 小毕最近电脑很慢,怀疑是中了病毒,于是找了三款杀毒软件扫描了一下:
A软件扫描结果:如果中了病毒X,那么也可能中了病毒Y
B软件扫描结果:如果没有中病毒X,那么一定中了病毒Y
C软件扫描结果:中了病毒X
小毕不知道该相信哪个,于是找360技术支持,360技术支持告诉他只有一个软件的扫描结果是正确,那么请推断:()
A 中了病毒X B 中了病毒Y C 两个病毒都中了 D 两个都没中
2. 一个富人雇1人为他做七天工,他给他的工钱是毗邻在一起的七块金条(天天一块),要保证天天雇工拿到他应拿工钱(不能多也不能少),富人只能掰断二次连在一起的金条,问:最少掰断几次能做到按要求给雇工报酬?()
A. 2 B 3 C 4 D 7
3. 某学校有四名外国专家,分别来自美国、加拿大、韩国和日本。他们分别在电子、机械
和生物三个系工作,其中:
① 日本专家单独在机械系;
② 韩国专家不在电子系;
③ 美国专家和另外某个外国专家同在某个系;
④ 加拿大专家不和美国专家同在一个系。
以上条件可以推出美国专家所在的系为
(A) 电子
(B) 机械系
(C) 生物系
(D) 电子系或生物系
答案: D
4.五对夫妇甲乙丙丁戊聚会,见面是互相握手问候,每个人都可以和其他人握手,但夫妇之间不能握手,甲先生好奇地私下问每个人(包括他太太)打听刚才握手的次数,得到的回答是:0,1,2,3,4,5,6,7,8,文甲太太握手( )次。
A. 3 B 4 C 5 D 6
答案:B
分析:这是一道逻辑推理趣题 .显然 ,每个人不会和自己握手 ,也不会和自己的配偶握手 .当然某两人之间也不会握两次手 .此外 ,由于各种原因造成可握手的人并不一定都握手 .因此在他们这 10个人中 ,握手次数最多的人握手的次数也不能大于 8. 由甲已经问得九个人握手的次数分别是 0 ,1,2 ,3 ,4,5 ,6,7,8, 共九种情形 .分析可得 :握手次数为 8的人和握手次数为零的人必定是一对夫妻 .这是因为握手次数为 8的人 ,不妨假定为乙 ,他必和除乙太太以外的四对夫妇中的每个人都握了手 .于是这四对夫妇中的每个人握手的次数都不能是零 .那么 ,握手次数为零者只能是乙太太了 .这样 ,乙氏夫妇的握手次数已经确定 ,予以排除...,那么既然握手次数之和为8的必定是一对夫妻,九人中又没有两个人握手的次数相同,所以只有甲先生和甲太太握手次数同为4次
5. 甲、乙、丙、丁四个人,一个是教师,一个是售货员,一个是工人,一个是老板。请你根据下面的情况判断每个人的职业。()
(1) 甲和乙是邻居,每天一起骑车去上班(2) 甲比丙年龄大
(3) 甲和丁业余炼武术
(4) 教师每天步行上班
(5) 售货员的邻居不是老板
(6) 老板和工人互不相识
(7) 老板比售货员和工人年龄都大
6. 某商店以60元同时卖出两件商品,已知其中一件赚20%,另一件亏20%,那么这个商店卖出这两件商品是赚了()
A -10 B 5 C -5 D 0
7. 某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15% 绿色85%,事发时有一个人在现场看见了,他指证是蓝车
但是根据专家在现场分析,当时那种条件能看正确的可能性是80%
那么,肇事的车是蓝车的概率到底是多少()
A 12% B 21% C 41% D 80%
提示:贝叶斯概率题
8. X是类名称,下面哪个写法是错误的
A const X * x B X const * x C const X const *x D X * const x
9. 程序输出题()
#include <stdio.h>
void main()
{
for(int a = 1, b = 1; a <= 100; a++)
{
if(b >= 20) break;
b += 3;
}
b = b - 5;
printf("%d\n", a);
}
A 6 B 7 C 8 D 9
10.判断题()
for(int i = 0, k = 1; k = 0; i++, k++)
A 判断循环的条件不合法 B 陷入无限循环 C 循环一次也不执行 D 循环只执行一次
11. 假设指针变量p定义为:int *p = new int[100],下面释放p所执行内存的操作中正确的是()
A delete p B delete *p C delete &p D delete []p
12. 选择填空()
#include <stdio.h>
void test(void *data)
{
unsigned int value = 填空处;
printf("%d\n", value);
}
void main()
{
unsigned int data = 10;
test(&data);
}
A *data B (unsigned int) *data
A (unsigned *)data B *(unsigned int *)data
13. 在C++中下面哪个可以成为对象继承之间的转换()
A static_cast B dynamic_cast C const_static D reinterpret_cast
答案:A
14. 下面程序的输出结果是()
A *pa = new A();
pa->f();
B *pb = (B*)pa;
pb->f();
delete pa, pb;
pa = new B();
pa->f();
pb = (B*)pa;
pb->f();
A AABA B AABB C AAAB D ABBA
15. 辗转相除法求两个非负整数之间的最大公约数
long long gcd(long long x, long long y)
{
if(y == 0) return 0;
else return gcd(y, x % y);
}
假设x和y中较大的数长度为n,则此算法的时间复杂度是()
A O(1) B O(lgn) C O(n) D O(n ^ 2)
答案:辗转相除法的时间复杂度稳定于O(logn)
16. 进程间通讯方式中哪种访问速度最快?()
A 管道 B消息队列 C 共享内存 D 套接字
答案:C
17. TCP关闭过程中,正确的是()
A、处于TIME_WAIT状态的链接等待2MSL后真正关闭链接
B、对一个established状态的TCP连接,在调用shutdown函数之前调用close接口,可以让主动调用的一方进入半关闭状态
C、主动发送FIN消息的连接端,收到对方回应ack之前不能发只能收,在收到对方回复ack之后不能发也不能收,进入CLOSING状态
D、在已经成功建立连接的TCP连接上,任何情况下都不允许丢失数据。
18. 下列说法错误的是()
A、单线程异步非阻塞模式通常在单核CPU情况下能够比多线程更充分利用资源
B、采用锁来访问现场共享资源时,如果加锁和解锁操作处在同一个线程中,则不会导致死锁
C、一个程序枝梢有一个进程,一个进程至少有一个线程
D、一个同步方法是一段时间内只允许一个线程进入执行
19. 代码生成阶段的主要任务是()
就不给出选项了,答案是:把中间代码变换成依赖具体机器的目标代码
20. 词法分析器用来识别
A 句子 B 句型 C 单词 D 生产式
答案:C
21. 下列说法中,哪个是错误的
A、若进程A和进程B在临界段上互斥,那么当进程A处于该临界段时,它不能被进程B中断
B、虚拟存储管理中采用对换策略后,用户进程可使用的存储空间似乎增加了
C、虚拟存储管理中的抖动现象是指页面置换时用于换页的时间大于程序执行时间
D、进程可以由程序、数据和进程控制块描述
答案:C
22. 操作系统采用分页式存储管理中,要求
A、每个进程拥有一张页表,且进程的页表驻留在内存中
B、每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中
C、所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
D、所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度的节约有限的内存空间
答案:B
23. linux中调用write发送网络数据返回n(n > 0)表示()
A 对方已收到n个字节 B 本地已发送n个字节
C 系统网络buff已收到n个字节 D 系统调用失败
24. HTTP应答中的500错误是指()
A 服务器内部错误 B 文件未找到 C 客户端网络不通 D 没有访问权限
答案:A
主观题
1. 在审计某一开源项目的代码时,假设有下面一个foo()子函数的实现。从安全的角度看,会存在安全漏洞吗?有的话,请(1)描述漏洞细节,(2)说明可以利用的方法,(3)还有该怎么修补漏洞。没有的话,也请说明为什么。
int foo( (void*funcp)() ){
char * ptr = pointer_to_an_array;
char buf[128];
gets(buf);
strncpy(ptr, buf, 8);
(*funcp)();
}
提示:函数指针的缺陷、gets函数的缺陷、foo函数传参的问题等。
2. 编写一个函数求一个数组中的第二大数
提示:比较简单,但是有很多细节需要考虑,反正我面试时被面试官问到我写的这个程序,指出了里面的N多bug,所以细节
试卷类型:软件开发A1 考试时长:120分钟 一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分) 1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D) A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA 2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD) A.有序数组 B.有序链表 C.AVL树 D.Hash表 3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC) A.快速排序 B.堆排序 C.归并排序 D.冒泡排序 4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A) A.8 3 2 5 1 6 4 7 B.3 2 8 5 1 4 6 7 C.3 8 2 5 1 6 7 4 D.8 2 3 5 1 4 7 6 5 当n=5时,下列函数的返回值是:(A) [cpp] view plaincopy int foo(int n) { if(n<2)return n; return foo(n-1)+foo(n-2); } A.5 B.7 C.8 D.10 6 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C) A.37.5% B.32.5% C.28.6% D.26.1% 7 Unix系统中,哪些可以用于进程间的通信?(BCD) A.Socket B.共享内存 C.消息队列 D.信号量 8 静态变量通常存储在进程哪个区?(C) A.栈区 B.堆区 C.全局区 D.代码区 9 查询性能(B) A. 在Name字段上添加主键 B. 在Name字段上添加索引 C. 在Age字段上添加主键 D. 在Age字段上添加索引 10 IP地址131.153.12.71是一个(B)类IP地址。 A.A B.B C.C D.D 11 下推自动识别机的语言是:(C) A. 0型语言 B.1型语言 C.2型语言 D.3型语言 12 下列程序的输出是:(D) [cpp] view plaincopy #define add(a+b) a+b int main() { printf(“%d\n”,5*add(3+4)); return 0; } A.23 B.35 C.16 D.19 13 浏览器访问某页面,HTTP协议返回状态码为403时表示:(B) A 找不到该页面 B 禁止访问 C 内部服务器访问 D 服务器繁忙 14 如果某系统15*4=112成立,则系统采用的是(A)进制。 A.6 B.7 C.8 D.9 15 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A) A a(000) b(001) h(01) i(10) o(11) B a(0000) b(0001) h(001) o(01) i(1) C a(000) b(001) h(01) i(10) o(00) D a(0000) b(0001) h(001) o(000) i(1) 16 TCP和IP分别对应了OSI中的哪几层?(CD) A Application layer B Presentation layer C Transport layer D Network layer 17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C) A.EDCBA B.DECBA C.DCEAB D.ABCDE 18 同一进程下的线程可以共享以下?(BD) A. stack B.data section C.register set D.file fd 19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D) 1:成员对象的构造函数 2:基类的构造函数 3:派生类本身的构造函数 A.123 B.231 C.321 D.213 20 如何减少换页错误?(BC) A 进程倾向于占用CPU B 访问局部性(locality of reference)满足进程要求 C 进程倾向于占用I/O D 使用基于最短剩余时间(shortest remaining time)的调度机制 21 递归函数最终会结束,那么这个函数一定?(B) A 使用了局部变量 B 有一个分支不调用自身 C 使用了全局变量或者使用了一个或多个参数 D 没有循环调用 22 编译过程中,语法分析器的任务是(B) A分析单词是怎样构成的 B 分析单词串是如何构成语言和说明的 C 分析语句和说明是如何构成程序的 D 分析程序的结构 23 同步机制应该遵循哪些基本准则?(ABCD) A.空闲让进 B.忙则等待 C.有限等待 D.让权等待 24 进程进入等待状态有哪几种方式?(D) A CPU调度给优先级更高的线程 B 阻塞的线程获得资源或者信号 C 在时间片轮转的情况下,如果时间片到了 D 获得spinlock未果 25 设计模式中,属于结构型模式的有哪些?(BC) A 状态模式 B 装饰模式 C 代理模式 D 观察者模式 二、填空题(共4题10个空,每空2分,共20 分) 1 设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为DQFXAPBNMYCW。 2 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是QACSQDFXRHMY;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是FHCDQAMQRSYX。 3 二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:_________,_________。 4 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左、右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。N2,NL,NR、N0都是全局量,且在调用count(t)之前都置为0。 [cpp] view plaincopy typedef struct node { int data; struct node *lchild,*rchild; }node; int N2,NL,NR,N0; void count(node *t) { if (t->lchild!=NULL) if (t->rchild!=NULL) N2++; else NL++; else if (t->rchild!=NULL) NR++; else N0++; if(t->lchild!=NULL) count(t->lchild); if(t->rchild!=NULL) count(t->rchild); }/* call form :if(t!=NULL) count(t);*/ 三、Web前端方向简单题(略) 四、其他方向简答题(共2题,每题20分),选作题,不计入总分) 1 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。
2 A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
posted on 2014-03-31 23:34 Accepted-wwh 阅读(431) 评论(0) 收藏 举报
浙公网安备 33010602011771号