接下来的面试题传送门:
2014 360校园招聘技术类面试题
<p>
</p>
选择题
- 小毕最近电脑很慢,怀疑是中了病毒,于是找了三款杀毒软件扫描了一下:
A软件扫描结果:如果中了病毒X,那么也可能中了病毒Y
B软件扫描结果:如果没有中病毒X,那么一定中了病毒Y
C软件扫描结果:中了病毒X
小毕不知道该相信哪个,于是找360技术支持,360技术支持告诉他只有一个软件的扫描结果是正确,那么请推断:()
A 中了病毒X
B 中了病毒Y
C 两个病毒都中了
D 两个都没中
一个富人雇1人为他做七天工,他给他的工钱是毗邻在一起的七块金条(天天一块),要保证天天雇工拿到他应拿工钱(不能多也不能少),富人只能掰断二次连在一起的金条,问:最少掰断几次能做到按要求给雇工报酬()
A. 2 B .3 C. 4 D .7某学校有四名外国专家,分别来自美国、加拿大、韩国和日本。他们分别在电子、机械
和生物三个系工作,其中:
① 日本专家单独在机械系;
② 韩国专家不在电子系;
③ 美国专家和另外某个外国专家同在某个系;
④ 加拿大专家不和美国专家同在一个系。
以上条件可以推出美国专家所在的系为 (D)
(A) 电子
(B) 机械系
(C) 生物系
(D) 电子系或生物系五对夫妇甲乙丙丁戊聚会,见面是互相握手问候,每个人都可以和其他人握手,但夫妇之间不能握手,甲先生好奇地私下问每个人(包括他太太)打听刚才握手的次数,得到的回答是:0,1, 2,3,4,5,6,7,8,文甲太太握手( )次。
A. 3 B. 4 C. 5 D. 6甲、乙、丙、丁四个人,一个是教师,一个是售货员,一个是工人,一个是老板。请你根据下面的情况判断每个人的职业。
(1) 甲和乙是邻居,每天一起骑车去上班
(2) 甲比丙年龄大
(3) 甲和丁业余炼武术
(4) 教师每天步行上班
(5) 售货员的邻居不是老板
(6) 老板和工人互不相识
(7) 老板比售货员和工人年龄都大某商店以60元同时卖出两件商品,已知其中一件赚20%,另一件亏20%,那么这个商店卖出这两件商品是赚了()
A -10 B 5 C -5 D 0某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15% 绿色85%,事发时有一个人在现场看见了,他指证是蓝车。
但是根据专家在现场分析,当时那种条件能看正确的可能性是80%
那么,肇事的车是蓝车的概率到底是多少()
A 12% B 21% C 41% D 80%X是类名称,下面哪个写法是错误的()
A const X * x B X const * x C const X const *x D X * const x下面输出什么?()
#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
下面说法正确的是()
for(int i = 0, k = 1; k = 0; i++, k++)
A 判断循环的条件不合法
B 陷入无限循环
C 循环一次也不执行
D 循环只执行一次假设指针变量p定义为:int *p = new int[100],下面释放p所执行内存的操作中正确的是()
A delete p B delete *p C delete &p D delete []p选择填空()
#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
C (unsigned *)data D *(unsigned int *)data
在C++中下面哪个可以成为对象继承之间的转换()
A static_cast B dynamic_cast C const_static D reinterpret_cast下面程序的输出结果是()
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
- 辗转相除法求两个非负整数之间的最大公约数()
long long gcd(long long x, long long y)
{
if(y == 0) return 0;
else return gcd(y, x % y);
}
假设x和y中较大的数长度为n,则此算法的时间复杂度是(B)
A O(1) B O(lgn) C O(n) D O(n ^ 2)
进程间通讯方式中哪种访问速度最快?()
A 管道 B消息队列 C 共享内存 D 套接字TCP关闭过程中,正确的是()
A、处于TIME_WAIT状态的链接等待2MSL后真正关闭链接
B、对一个established状态的TCP连接,在调用shutdown函数之前调用close接口,可以让主动调用的一方进入半关闭状态
C、主动发送FIN消息的连接端,收到对方回应ack之前不能发只能收,在收到对方回复ack之后不能发也不能收,进入CLOSING状态
D、在已经成功建立连接的TCP连接上,任何情况下都不允许丢失数据。下列说法错误的是()
A、单线程异步非阻塞模式通常在单核CPU情况下能够比多线程更充分利用资源
B、采用锁来访问现场共享资源时,如果加锁和解锁操作处在同一个线程中,则不会导致死锁
C、一个程序枝梢有一个进程,一个进程至少有一个线程
D、一个同步方法是一段时间内只允许一个线程进入执行代码生成阶段的主要任务是(把中间代码变换成依赖具体机器的目标代码)。
词法分析器用来识别(C )
A 句子 B 句型 C 单词 D 生产式下列哪一个可以作为对象继承之间的转换(A)
A static_cast B dynamic_cast C const_cast D reinterpret_cast下列说法中,哪个是错误的(C)
A、若进程A和进程B在临界段上互斥,那么当进程A处于该临界段时,它不能被进程B中断
B、虚拟存储管理中采用对换策略后,用户进程可使用的存储空间似乎增加了
C、虚拟存储管理中的抖动现象是指页面置换时用于换页的时间大于程序执行时间
D、进程可以由程序、数据和进程控制块描述操作系统采用分页式存储管理中,要求(B)
A、每个进程拥有一张页表,且进程的页表驻留在内存中
B、每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中
C、所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
D、所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度的节约有限的内存空间linux中调用write发送网络数据返回n(n > 0)表示()
A 对方已收到n个字节
B 本地已发送n个字节
C 系统网络buff已收到n个字节
D 系统调用失败HTTP应答中的500错误是指()
A 服务器内部错误 B 文件未找到 C 客户端网络不通 D 没有访问权限根据自己的理解描述下Android数字签名。
答:(1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
(2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
(3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
(4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。如何判断大小端?
big endian(大端法)是指低地址存放最高有效字节(MSB),而little endian(小端法)则是低地址存放最低有效字节(LSB)。
#include <iostream>
using namespace std;
int main()
{
unsigned int a = ~0;
if( a>65536 )
{
cout<<"32 bit"<<endl;
}
else
{
cout<<"16 bit"<<endl;
}
return 0;
}
编程题
有一堆砖,工人每天搬剩下的一半,然后老板说不够,再加三块。n天搬完,问一共多少砖。
主观题
- 在审计某一开源项目的代码时,假设有下面一个foo()子函数的实现。从安全的角度看,会存在安全漏洞吗?有的话,请:
(1)描述漏洞细节;
(2)说明可以利用的方法;
(3)还有该怎么修补漏洞。没有的话,也请说明为什么。
int foo( (void*funcp)() ){
char * ptr = pointer_to_an_array;
char buf[128];
gets(buf);
strncpy(ptr, buf, 8);
(*funcp)();
}
- 编写一个函数求一个数组中的第二大数。