一面
2. 进程间通讯方式
3. 数据库中事务的特征
4. 数据库的索引
顺序索引、B+树索引、Hash索引
5. 反转链表
6. 包含min的栈
7. 二叉树深度
8. 智力题:容量10升桶中有10升油,另有7升空桶和3升空桶,怎么把10升油均分到10升桶和7升桶中。
9. 项目中用到了Python,Python起的作用是什么
10. 是否理解hadoop等大数据平台
11. 项目的代码量
12. QQ 添加好友按名称搜索时,怎么区别广告号,诈骗号
13. 微信朋友圈内容的安全鉴别;
14. 如何鉴别实施诈骗的 QQ 用户
15. 第四题是如何做反作弊,例如公众号的刷阅读量。
二面:
1.
2. 腾讯公司每个部门会经常开会,需要借用会议室,但是会议室的数量明显不够用,你能根据你学到的知识来设计一个方案解决会议室不够用的问题。——操作系统进程问题,同步互斥
1)可以采取提前预定的方式,制订一个时间期限,例如七天,可以预定七天内的会议室。
2)如果定了会议室不去——释放这个会议室,其他人也可以预定
3)有什么技术手段知道预定了会议室的人没有去么?——可以采用
- 签道,如果半小时内没有人签道就释放掉这个房间。
4)那如果每次都有人这么做,借了会议室不去,资源利用率还是没法提高啊?
——设置惩罚机制:连续三次预定了不去,就规定一个月不能再借用会议室
5)你的这个办法是通过行政手段来解决,这个办法在华为也许很有效,因为华为都是上行下效,但是腾讯公司是个非常宽容的内部环境,对员工没有那么多约束。
——必要的行政手段也许比技术手段更有效,也更节约成本。
3. 在校园内有见到过什么未被开发的但有利可图的商业价值?
1)租房子。很多考研的大三学生都会想着搬出宿舍住,我记得我大三的时候陪室友找房子只能一个小区一个小区去看他们张贴的广告或者问保安。对于学生的需求来说,1. 安全,最好能够和校内同学合租;2. 方便,离图书馆进;3. 价格实惠。所以可以考虑做类似于国外airbnb的app
2)轻约会。
4. 如果有一个人注册一个qq,如何保证这个qq号码和之前已存在的qq号码不重复呢?
字典树、搜索树(最满意),要自己说出方法的优缺点
5. MD5
7.
9. 10亿条短信,找出前一万条重复率高的
10. 对一万条数据排序,你认为最好的方式是什么
11.C++经典问题:
1)C++ 中虚函数,是怎么实现的
2)C++多态的实现方式
3)继承类调用构造函数顺序和析构函数顺序,什么时候要将 析构函数定义为虚函数。
4)引用与指针区别?指针和数组的区别?经常使用指针还是引用?
5)new 与 malloc的异同处
6)结构体内存对齐方式。
7)纯虚函数
纯虚函数是如何声明的(就是加 ’’ = 0 ’’ ),然后说了纯虚函数的作用是为子类提供一个接口,而普通虚函数除了为子类提供一个接口以外,还提供了一份缺省实现;其他非虚函数则是为子类既提供了一个接口,也提供了一份强制性实现。然后说了具有纯虚函数的类是抽象类,不能创建类的对象。随后介绍了具有普通虚函数类对象的内存分布情况,以及虚函数的实现机制。感
8)什么时候需要虚析构函数。
9)知不知道PDB文件。
10)重载荷覆盖的区别
11)extern ‘ C ’ 声明一个函数有什么用
12)const在成员函数的位置,作用,如何保证成员变量的const?
13)C++虚析构函数的作用,如果析构函数不是析构函数有什么后果?
14)C++虚基类是什么?纯虚函数可不可以有实现?什么情况下会对纯虚函数进行实现?
15)C++中如何实现接口,接口与多继承的优劣
如果基类的析构函数是非虚函数,会有什么后果
17)Map和set的原理和区别
18)如果父类和子类都有自己的虚函数(不是覆盖),内存结构是怎样的(各自都有自己虚函数指针)
12. 算法:
1)给一个正整数n,现在想将n分成若干个正整数,使得它们的乘积最大。
2)经典的n个数求前k大的数。分两种情况,第一是没有相同的数,另外一种是有。
3)和百度二面问的一模一样,两个文件A和B,求A中没有但B中有的单词。
4)快排:
我把基本思路说完之后,主动说了几种快速排序的优化方法,比如枢纽元三数取中,排序数组个数小于一定数目之后用插入排序,元素聚集,用非递归方法去编写快速排序并与递归方法比较。
13.智力题:
1)有一个商家在做活动,活动规则是这样的,给你一个骰子,6面,分别是1.2.3.4.5.6.随机摇一下,摇到那一面就给你多少钱,问收你多少钱你才会玩这个游戏?
2)如果可以摇一次,也可以摇二次,但是要以最后一次为准,比如第一次你摇到3,你不摇了,就给你3元,如果你摇第二次,摇到2.那么你只能得到2,问收你多少钱你才会玩这个游戏,?
答案:3.5,4.25
16. 微信中附近的人的功能,其位置信息该如何存储?
17. hash表中为了防止冲突过多常用素数,为什么?
18. vector中内存扩充方式怎样?为什么每次都有2被扩充?( 算法导论中平摊分析 )
19. vector与list的区别
20. static作用
21. 两个文件,一个是class A,一个是class B,如果A跟B相互引用,如何include?
22. 内存对齐,为什么要内存对齐
23. 1G的内存可以装入2G的程序么?怎么装?
24. 常见的页面置换算法?
26. 循环与递归的区别
27. 二叉树给出前序,中序求后序
28. 墙上有一个插孔,提供无线的4孔插板,有28盏灯,至少需要多少插孔?280灯呢?
29. 一个处理机时间分辨率是1s,单执行流,每秒系统运行一次run函数,现要求设计一个提供定时任务的函数addfunc( Xs, func),可以设置在X时间运行函数func。提供系统API是gettime()来获取当前时间。
30. 1G物理内存,malloc申请2G空间,可以么?为什么?
31.
34. 个处理机时间分辨率是1s,单执行流,每秒系统运行一次run函数,现要求设计一个提供定时任务的函数addfunc( Xs, func),可以设置在X时间运行函数func。提供系统API是gettime()来获取当前时间。
fun(){ int a; a=6; } 与fun(){ int a=5; a=6; }二者在二进制代码上有什么区别?若变量是static的呢?
35. 一个函数rand可以等概论生成无符号整数,假定M的值是这样定义的,若rand产生的序列中只有一个r0=r1,则M=2;若有r0=r1=r2,则M=3;以此类推,求M的期望。
38. 说说排序算法:插入,冒泡,希尔,选择,归并,快排,基数。说说常用的数据结构:数组,链表,队列,堆栈,优先队列,hashtable,map。
39. 双向链表,需要你按顺序输出,要求如下:1)时间复杂度不能超过nlogn,最坏也不能退化成n^2 2)空间复杂度 o(1) ,他让我说思路,我说我首先排除了快排,因为会退化成n^2, 然后排除归并和堆排序,归并要额外空间,因为是链表所以堆排序也不是nlogn,然后他就说那你不是说这道题无解了吗。我说我想不到。然后他问我堆排序的底层结构,我说是一个二叉树,然后说链表的数据结构,我说是数据域和指向前后的两个指针,然后他说他都提示到这里了我还想不出来了。
https://discuss.leetcode.com/topic/643/i-have-a-pretty-good-mergesort-method-can-anyone-speed-up-the-run-time-or-reduce-the-memory-usage
1.自我介绍
2. 未来打算
3. 最近看了那些书?逛过哪些论坛?
书:python数据处理、计算机网络、
论坛:CSDN、博客园等
4. 技术类网站
5. 你写了这么多技术博客,一定有很多人评论吧?说一个最近写的感觉最好的博客?
6. 工作地点
7. 未来职业规划
8. 个人优缺点
9. 对于我实验室的项目,如果再给我2个月的时间,我会在哪方面进行改进
10. 在实习中学到了什么
11. 如何安排工作时间。
12. 对腾讯公司的认识,对腾讯游戏的认识
13. 最有成就的事
14. 最近在学习什么
15. 对腾讯的看法
16. 找工作最看重的三点
17. 如果腾讯要在你家所在的城市举办校招,现在要选择一家酒店,你会如何考虑
18. 如何鉴别淘宝上卖假货的商家,价格维度可以用什么策略等
一、网络:
1. 简介 TCP 和 UDP 区别,他们位于哪一层?
2. 描述TCP 协议三次握手,四次释放的过程。
3. 为什么建立连接时是三次握手,两次行不行?如果第三次握手失败了怎么处理
4. 关闭连接时,第四次握手失败怎么处理?
5. 为什么四次释放?
6. TCP 协议是如何进行流量控制,拥塞控制的?
流量控制:面向字节的滑动窗口。
拥塞控制:让每一个发送方感知网络的拥塞程度,来限制其向网络发送流量的速率
7. 滑动窗口、发送窗口怎么才能知道自己不能再发了?怎么通知的?
接受窗口会根据自己的接受能力设定一个接受窗口值,并封装在发送给通信对方的TCP报文段中,如果接受窗口值为0,则停止发送,直到等到下一个非零窗口值;如果接受窗口值非零,发送方发送的窗口需小于等于这个值。
8. TCP三次握手有哪些漏洞,有没有被攻击的可能,怎么被攻击
是有漏洞的,主要是如果收到一个恶意攻击的ip一直请求连接,然后服务器会发送ack确认,但是永远等不到回复,就会导致服务器的NIC,内存,cpu占用率超载,这种攻击方式叫做基于TCP半开回话的洪水攻击。
9. QQ是UDP还是TCP?
QQ采用的是以UDP为主,TCP为辅的方式。
使用UDP有两个考虑;
1)QQ服务器的并发量巨大,UDP无连接的协议,效率高,速度快,占资源少
2)网络环境复杂,如果在客户端之间建立TCP连接,验证影响传送信息的效率,而UDP能穿透大部分的代理服务器。
但是UDP是不可靠的,于是腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。
10. 你怎么理解分层和协议?
11. 路由器和交换机的工作原理大概是什么,他们分别用到什么协议,位于哪一层?
12. HTTP 请求中的 GET 和 POST 的区别
13. Session 和 Cookie 的区别。
14. 谈谈你对 HTTP 1.1,2.0 和 HTTPS 的理解。
15. HTTP 为什么要用TCP而不用UDP?
16. HTTP 报头以及状态码。
17. http和socket的区别,两个协议哪个更高效一点
TCP协议:是传输层协议,主要解决数据如何在网路中传输
http协议:是基于TCP的应用层协议,主要解决如何包装数据。
Socket:在传输层,用于实现:不同主机间进程的通信。封装了TCP/IP协议,对外提供给程序员做网络开发所用的编程接口。
18. 了解的网络攻击手段,可以怎么预防
19. 如果客户端keep-alive,服务端不支持keep-alive,连接是从客户端断开还是从服务端断开?为什么?
1. keep-alive
keep-alive:持久连接,客户端到服务器端的连接持续有效。
而非keep-alive模式:每个请求/应答客户端和服务器都要新建一个连接。
2.
20. IP分组传输以及重传等
21. 网络字节序与主机字节序的区别?为何要有这样的区别?
22. 用浏览器打开网页发生的全部事件?第二次打开这个网页呢?
二、操作系统
1. 进程和线程的区别
2. 多线程和多进程的区别
3. 进程间的通信方式
4. 操作系统的内存管理
1. 段、页、段页式
2. 堆、栈
5. 操作系统页面管理是怎样的?页面大小一般多少?过大或过小会怎样?
6. 请求资源死锁,如何在编程上防止死锁?
三、其他
1. 断言&异常&if
断言:专为调试而设计,用于处理不应该在程序中出现的情况,出现的时候认为程序出错了,需要根据debug宏来在调试器开启,发布时去掉。视为对程序进行验证的一种工具,而不是程序的一部分,一旦assertion被禁用,所有语句会被跳过。
断言适用的场景:
- 在私有函数计算前,检查输入参数是否有效
- 在函数计算以后,检查函数结果是否有效
- 检查程序关键不变量