您的位置:首页 > 职场人生

写在悲剧的笔试和面试后

2011-05-03 18:08 211 查看
腾讯、百度、盛大都悲剧了。贴出来部分题目供大家参考,其实有时候题目都是很简单的,但是由于术业有专攻,很多都已经完全忘记了,但是人家不管这个,你不会就是不符合人家的要求。不要相信他们说的找工作啥的都是考察你的能力,其实人家也是需要部分对口的,你不会网络编程,不会脚本、不会多线程、不会windows编程,就是会点C语言要你做啥啊。so,大家一起努力吧。

部分题目已经在其他文章中写到了,这里只是大体写一些。有些内容已经签了保密协议,虽然没有被录取,但是原则还是有的。

盛大笔试:

1、求两个有序数组的中位数

2、有序数组分为前后两部分,后面一部分移到前面去,然后进行二分查找!

3、忘记了

4、微博发帖的框架和缓存机制

盛大电面1:

1、项目一定要总结好

2、TCP和UDP的区别及优缺点

3、多线程

4、两个单向链表怎么判断是否相交

5、C++、脚本、linux

北京百度电面1:

1、malloc的原理

2、线性表、二叉平衡树、哈希表的比较,主要是数据查找、插入、删除的时间复杂度

3、memcpy和strcpy的区别

4、循环队列的实现方式和优化措施

5、N个元素取出最大的K个,从时间复杂度方面考虑,N可能很大,时间复杂度最少到线性的时间

6、搜索引擎怎么计算两个单词是否相关。

7、extern和static都有哪些用处

上海百度电面1:

1、排序算法时间复杂度分析

2、C语言内存分配机制

3、日志切割程序测试案例的设计

4、linux

腾讯笔试和面试:

腾讯的笔试考的很杂,包括数据结构、操作系统、数据库、网络。本科的时候你都会的,但是现在不行了。

面试:

1、网络编程

2、进程间同步的方法

进程间通讯(IPC)方法主要有以下几种:
管道/FIFO/共享内存/消息队列/信号
(1)管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯

命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式
(2)消息队列是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,

而另一个进程则从那个消息队列中取数据。需要注意的是,消息队列是用创建文件的方式建立的,如果一个

进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,

保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!!!!
(3)信号量,它与WINDOWS下的信号量是一样的,所以就不用多说了

(4)共享内存,类似于WINDOWS下的DLL中的共享变量,但LINUX下的共享内存区不需要像DLL这样的东西,

只要首先创建一个共享内存区,其它进程按照一定的步骤就能访问到这个共享内存区中的数据,当然可读可写
以上几种方式的比较:
(1)管道:速度慢,容量有限,只有父子进程能通讯
(2)FIFO:任何进程间都能通讯,但速度慢
(3)消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
(4)信号量:不能传递复杂消息,只能用来同步
(5)共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

3、一个矩阵,横竖都有序,要求查找某个特定的数字

4、编程题目:28=1+2+4+7+14;实现1000以后所有质因子(1不知道为什么算是,但是就是这么要求的)之和等于本身的数字,当时编译环境是Dev-C++,没用过,很囧当时。不会调试,搞了半天才整好,估计就是因为这个被鄙视了。

5、实现一个循环队列

用数组实现,注意求余的应用

6、从1—N输出其中的质数

7、C++防止内存泄露的机制

new、delete

http://dev.yesky.com/262/2149262.shtml

http://dev.yesky.com/108/2380608.shtml

8、C++ std:map的实现

群硕笔试和面试:

一:什么是死锁?
死锁是指在一组进程中的各个进程均占有不会释放的资源,
但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
死锁产生有四个必要的条件:互斥条件,不可剥夺条件,部分分配,循环等待,
这四个条件不是充分条件,即使这四个条件同时存在,系统也不一定发生死锁,
但系统一但发生死锁,这四个条件一定是满足的。

死锁产生的必要条件是:
① 互斥条件:系统中存在一个资源一次只能被一个进程所使用;
② 非抢占条件:系统中存在一个资源仅能被占有它的进程所释放,而不能被别的进程强行抢占。
③ 占有并等待条件:系统中存在一个进程已占有了分给它的资源,但仍然等待其他资源。
④ 循环等待条件:在系统中存在一个由若干进程形成的环形请求链,
其中的每一个进程均占有若干种资源中的某一种,同时每个进程还要求(链上)下一个进程所占有的资源。

二:C内存布局,哪些可共享
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,
初始化的全局变量和静态变量在一块区域,
未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码[可共享]

三:如何判断链表中有环
两个指针一个快一个慢,有环最终总会相遇

四:如何判断链表中有交点
最后一个链表元素是否相等,时间复杂度O(n)
假设第一个长度为n较短,第二个长度为m,p指向长为n的链表,q指向长为m链表的第m-n个元素,一起往后走,
判断时候相等,时间复杂度O(n)

五:SQL内连接,左连接,外连接语句和结果

六:数据库多个用户访问权限如何设置
一个数据库角色并赋给能够访问所有表的权限(添加、修改、删除、查询)及执行存储过程的权限,
并把需要此权限的用户加入即可
1、创建用户,并加入到库中
2、在库中创建数据库角色
3、将当前数据库中所有存储过程的执行权限赋给角色
4、指定用户为某个数据库角色

七:建立、输出、反转链表

八、从程序到目标代码过程(编译原理步骤)
词法分析,语法分析,语义分析,中间代码生成,优化,目标代码生成
C/C++源代码要经过:预处理、编译、汇编、连接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: