码迷,mamicode.com
首页 > 其他好文 > 详细

大三拿腾讯offer

时间:2017-04-30 01:11:42      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:引用   笔试   结束   file   进程创建   stl   c语言程序   左右   电面   

作者:逸文奥特曼
链接:https://zhuanlan.zhihu.com/p/26637967
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

4月26日收到了腾讯的offer,终于安心了,很多小伙伴们要我写面经介绍下,其实自己能拿到腾讯的offer 99%是运气~,

这里就介绍下自己的面经跟总结自己的看的书跟学习方法,

自己来自一所非985垫底的211大学)~大三本科,主要学习的是Linux内核/C++,投的岗位都是后台开发,

自己的项目也就2个demo,一个简易kernel,一个很简单的网络库.

因为学校位置不方便,只投了腾讯跟美团.不可以投那么多互联网公司(路费.一出疆就上千),美团各种原因放弃了,

然后就这次到西安参加腾讯面试花了1800左右,拿到了腾讯的offer就不打算再找了,结束自己的春招求职.

以下是自己面腾讯的坎坷经历,只记得部分问题,很多都忘了,见谅



-----------------腾讯电面-----------------

4月10日,是日也,天朗气清、惠风和畅~牵着女朋友的小手手,手机突然显示来自深圳腾讯的电话,惊慌失措中……

(因为内推失败,然后笔试时间因为个人原因错过了,怎么腾讯面试官还给我电话)

然后就在路边进行了电话面试……

面试内容如下:

1.c++的static关键字的作用(我从elf结构,链接过程来回答)

2.内联函数跟普通函数区别(从反汇编角度来回答)

3.select跟epoll的区别(epoll内核源码看过,从内核实现角度回答,所以回答的不错),

small插曲:对于很多博客说epoll使用了共享内存,我说完全错误的,然后就扯到共享内存的内核实现(基于tmpfs,为何2个进程映射同一个文件会映射到同一片物理内存,根本机制是page cache)

4.STL中的迭代器失效问题

5.指针,引用区别(反汇编分析,其实汇编指令实现都一样,可以把引用看做编译器管理的指针,语法糖)

6.Linux相关cpu内存网络相关指令

7.父子进程fork时,打开的文件的偏移量是否是相同的(从内核角度看,父子进程fork会将file文件复制一份,所以肯定会的)

8.Linux虚拟地址空间(3G以上内核,因为进程创建时,内核的页表全部拷贝到进程第768页目录项以上的,3G以下则是代码段(.init节,.text节,.rodata节),数据段(.data节,.bss节),堆(brk指针),栈从3G往下)

9.【计算机网络】只问了time_wait的危害,三次握手,四次断开

10.c++多态的机制实现(虚函数表,看过深度探索c++对象模型的都会的)

11.vector跟list区别,还有map的底层实现(红黑树)

12.extern关键字



50分钟电话面试~then接到去西安面试的通知







讲一波心路历程:

其实去西安面试心里很忐忑的,毕竟腾讯的面试都比较难,而感觉自己非常渣,然后路费都要1k5+,本来都放弃了……

【撒一波×粮~微笑~】

还好世界上最可爱最贴心最善良最美的女票鼓励我去,然后还给我出路费什么的,安慰我即使失败了,就当做增加面经,来西安旅游什么的.

so. 4月15号灰机来到西安,整夜辗转难眠……



【安利一波~】

腾讯面试点,五星级酒店,可谓是辉煌而精致,土豪中带着典雅,优雅中充满了艺术气息,奢华而不失内涵~腾讯土大哥

一面10:30,签到..等待面试地点通知...

-----------------一面---------------------

别说我low(好吧,我可能就是比较low)来到一个非常豪华的房间面试,面试官让我做自我介绍...

程序化中:我来自xxx大学,对xx很感兴趣,....(此处省略)

then面试官把代码题给我看

1.一个数组传递到函数,蜕变成指针,求字节数

2.定义在全局的对象,定义在堆中对象,定义在静态局部变量对象,定义在栈中的对象,析构函数的析构顺序(从函数汇编角度看待,非常容易这道题)

3.new int[10]跟new int[10]()区别

4.epoll的多选题.....正确答案只有一个...

5.让手写代码,求二叉树的翻转(镜像问题),刚好我在刷题的时候,刷过,还给女朋友讲过这道题,自己用了非递归队列实现,也用了递归实现,面试官觉得还行,就看了看我简历.

6.问到epoll跟select实现区别,

#好了~终于轮到我装逼了!#

从linux内核源码分析epoll的实现..把面试官忽悠住了.夸我很不错,有深度。

#果然装逼有时效,猝不及防面试哥哥一个问题抛来#

epoll的ET模式时,如果数据只读了一半,也就是缓冲区的数据只读了一点,然后又来新事件了..怎么办.

我当时听错了,一脸懵逼,结果乱猜了..面试官也猜到了..就没问了

(实际,fd都要支持内核的poll机制,新事件对应的fd.会把当前进程注册到等待队列,同时设置回调函数.,等fd对应的设备就绪时会唤醒等待队列中的进程,然后放入就绪链表..等等.肯定会继续啊)

然后又扯到网上那些破博客说什么epoll用了共享内存,一派胡言,把共享内存的实现说了一遍,基于tmpfs,然后tmpfs有什么不同,就扯到文件系统了...

7.红黑树,普通二叉树,AVL树,完全二叉树的区别(很简单,数据结构书都有)

8.编写c语言程序判断该大小端

9: linux内核解决惊群问题

10.hash碰撞,Trie树

11.map /set容器的实现原理(红黑树知识+STL容器内部原理)

Q:熟悉shell么..

A:不怎么熟悉

Q:说说tcp/udp区别,

(OK,轮到我装逼了~)

A:我把如果基于udp如何实现可靠传输说了一遍(网上有教程),然后udp啥一般用于视频传输,丢包几乎不影响,tcp有拥塞避免,流量控制,慢启动,快速回复算法,什么的都说了一通



切换至聊天模式~(面试官S. 我B)

S:你有什么想问的呢

B:我技术有什么缺陷,

S:在同级的人中算非常深入的研究这些技术的本质,基础非常不错,对内核也有不错的了解(看来我忽悠住了~),但感觉你缺少实践,书看的非常多,知识掌握也不错,就是实践差了点,不过你可以来腾讯实习,对你会很有帮助的.我会尽快安排你二面的..

S:因为你是从外地过来,让你高兴高兴,直接过了一面,等待晚上短信通知复试吧



...哈哈哈哈好高兴呀~~~啦啦啦啦啦





只能说又tmd一夜没睡好,持续性辗转难眠,间接性紧张失眠……尼玛其他人一面过后都要很久才收到二面,我tmd第二天9:30就二面...好坑啊啊啊..

一夜醒来三次,紧张到不行,8:40就到了酒店签到,9:23收到面试房间号..



-----------------二面---------------------

一进门,面试官又tmd让我自我介绍,程序化中xxxxxxxxx....省略..

他只提了一个问题,让我说说自己最熟悉的一部分。What?!我擦....我想想..

灵光一闪~想到Linux内核的内存管理机制,

就把Linux内核的物理内存管理(numa,uma架构,ZONE,PAGE,伙伴算法,SLAB机制,

冷热页缓冲机制基于LRU,OOM内存溢出机制,struct page跟物理内存的映射,page cache,还有swap分区等等),

虚拟内存管理,高端映射,(进程pcb中的mm_struct结构指向整个进程的虚拟内存空间,vm_area_struct结构.堆栈,数据段,代码段什么的,malloc实现机制,mmap映射)



(说了非常久,希望唬住面试官..结果悲剧惹……面试官懂Linux内核.你不废话嘛~二面面试官可是部门总监)

指出了几个错误(自己挖的坑(具体的就不说了..对看面经的同学没啥用))



不想说面试官全程对我微笑,莫名心虚……

然后聊到如何防止内存泄漏,把c++11的智能指针还有auto_ptr的实现说了一遍),



然后面试官又微笑~(面试官:S.我:B)

S:技术说了这么多很累了吧,你觉得自己最大的缺点是什么.

B:现实不会主动问人或者与人交朋友,不过在网上很活跃

S:你是键盘侠吧(开玩笑中……)

B:当然不是

S:你的表达能力还是要改善改善.

B:我意识到这方面了,所以经常给我女票讲解c/c++知识还有算法题,希望提高自己的语音表达能力,

S:那就很好.你今后的职业规划是怎样的

B:我会继续读Linux内核,因为我对内核的实现机制非常感兴趣还有底层的实现机制,还有会往分布式存储(乱说的)发展,希望自己技术得到非常大的提升.

S:你书读了很多,基础非常不错,对技术也有很深的探索,就是缺少实践,做的都是demo,需要来公司实践,



【接下来就是面试官装逼time.默默聆听中……】

把他那部门给夸的天花乱坠,什么负责整个腾讯虚拟币支付啥的,说我在他那部门实习技术会得到很大提升,

他有个带了10年的徒弟也一直在研究内核什么的,现在非常强,让我不要放弃继续研究内核实现.



然后问我还有什么问题,我说我从外地过来的,能否直接告知我结果

面试官直接说:你过了二面,等待hr面试吧,我会尽快把你简历给hr,让你早点回学校QAQ.



-----------------HR面---------------------



下午hr面试,躺在床上睡觉,被hr的电话吵醒来,问我方便么

(腾讯非常人性化,很多人hr面都是现场面试,而西安的hr要明天才到西安,然后我在外地,所以直接给我电话面试)

问哪里人什么的..有木有女朋友,什么是否是独生子.其实就是闲聊........

hr问了10多分钟就挂了电话~





有些小伙伴们问我看了哪些书,其实c/c++后台开发就那些经典书

另外介绍一点人生的经验:选购书籍.尽量选择国外的书...原因不多说,另外从豆瓣里选择书籍,看评论,评分

以下是自己看的书籍介绍



汇编部分:

汇编语言(masm汇编,王爽写的非常不错)

x86从实模式到保护模式(学习kernel必备,保护模式是一大坑)



c/c++部分:

C++ Primer(入门必备(但并不是0基础可以看,0基础看C++ Primer Plus)

Effective C++,More Effective C++(提升c++的编程技巧,面试官很多都从这书里问)

深度探索c++对象模型(了解c++的底层实现机制,不然面试官问了多态的实现,你不会就挂了)



STL部门:C++标准库(侯捷)(介绍STL六大组件的应用)

STL源码剖析(STL的源码,不过自己只看了一半而已)

范型编程与STL(绝版书,不过讲解traits时非常的nice)



操作系统概念部分 Linux鸟哥私房菜(linux相关命令操作,不过自己推荐the linux command line这电子书更棒)

《轻松学用linux shell编程》(shell学习相关的)

现代操作系统(非常经典的操作系统书,不要看国内的操作系统书)

深入理解计算机系统(CSAPP)(豆瓣高达9.0以上的书,含金量就不多说了,其中的第7章有关elf看懂了,那就不必看那本程序员的自我修养了)



操作系统内核部分:

操作系统真象还原(教你怎么从0实现一个kernel,看完对操作系统绝对有一个飞一般的认识,另外作者钢哥非常棒

,我经常骚扰他问内核问题,都会耐心回答)

Linux内核源代码情景分析(毛德操所写的2.4内核源码,感觉非常有深度,自己囫囵吞枣的看完,细节部门略过了)

Linux内核设计与实现(一本比较薄的2.6内核剖析书,很容易看懂其内幕)

深入分析Linux内核源代码(一本绝版书,陈莉君教授所写的2.4内核源代码,配合Linux内核源代码情景分析使用,效果更佳)

深入理解Linux虚拟内存管理(这本才刚开始看,没看多久)

Linux环境编程:从应用到内核(一本非常棒的新书,讲解apue的api背后的内核实现,作者我也加了,内核功底非常深厚)



计算机网络:

(计算机网络:自顶向下,不过学院那本谢仁希的还凑合吧)

tcp/ip详解卷1(腾讯课堂有明教教主讲解这本书)

网络编程:

Unix环境高级编程,Unix网络编程(这两本就不多说了,unix的圣经),

linux 高性能服务器编程(国内写的一本不错的书)



数据库那块自己很弱只看了mysql必知必会,redis入门实战 ~面试时也没问到数据库相关的,运气爆棚~



算法与数据结构:

自己的算法能力都很弱,这里只推荐那些算法比较弱的同学:

数据结构与算法分析(维斯),还有剑指offer题必须刷完,leetcode,编程之美也最好刷一刷,

,那算法那块就没问题了,当然这里指的是普通的开发岗位,而非算法岗





设计模式:

《设计模式:可复用面向对象软件的基础》,还有博览网上面的c++设计模式视频



辅助类的网址

牛客网(牛客网-专业IT笔试面试备考平台,最全C++JAVA前端求职题库,全面提升IT编程能力),牛客网上瘾有剑指offer,leetcode等各大互联网公司的涉及操作系统,数据结构什么的选择题,填空题,编程题,非常不错

还有各路大牛的面经,各种公司的内推什么的,感觉是校招必备的网址



当然最重要的一点,光看书远远不够,需要不断的写代码,才能提高编程能力,现在很多公司都要手写代码,所以这方面也要练练

以上是小弟的面试经历~End

作者:赛罗·奥特曼(自己啦)
链接:新疆学子的腾讯后台开发的面经_笔经面经_牛客网
来源:牛客网

大三拿腾讯offer

标签:引用   笔试   结束   file   进程创建   stl   c语言程序   左右   电面   

原文地址:http://www.cnblogs.com/xzzzh/p/6786617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!