C++面经:一个三本的菜鸡秋招的历程大牛可入跟我一样菜更可入
回馈牛油,之所以请大牛们进来是因为我在大牛面前只能是笑话,所以大牛们进来开心庆祝一下大牛们的人手几份offer选择,全当给你们秋招的结束增加乐趣(嘲笑一波菜鸡的咸鱼翻身未成,还自不量力要跟大牛抢offer)。像我一样底层菜鸡可以参考我的学习路径。
首先,先介绍我自己的秋招的结果。本人秋招笔试了大部分牛油投的互联网公司,但因为太菜只面了bat,盛大,深信服,迅雷,西山居,wps,bilibili等(本来想继续面试的,学校逼我回去上课了,不然不给毕业证......)。应该本人决定去迅雷吧(本科批发价)(广东人爸妈不太给远走高飞,哈哈哈)。
现在自我介绍下,我来自广东某校(一所或许没有人经历过我以下这种尴尬的事情吧)。非计算机专业,大一大二学的嵌入式开发,参加的比赛是全国电赛一二奖(然而在互联网行业没什么卵用),写过linux内核驱动开发(在互联网行业也没什么卵用)。大二暑假比完赛,偶然间师兄跟我说可以去试试面bat,当初天真的以为可以开干了。直到在牛客里认识到太多大牛,才发现自己就是垃圾堆里的垃圾(任何计算机基础都没有)。于是开始用大三一年的时间来和你们这些大神竞争(哈哈......自不量力的蠢货,赶紧滚出去)。根据很多牛油的面试经历,我从0开始制定了自己的学习方针。
说实话这一年我过得很苦,我业余爱好摄影旅行,为了找工作把单反卖了,把妹纸联系断了,导致现在出去拍照都没人跟,自作孽不可活,还要管好专业课的考试。天天呆实验室学习。很多人怀疑我是不是冷漠他们。哎..........我一个大男生在秋招也不知道因为面试哭了几回,悔恨自己不努力菜鸡。特别是面bat感觉比蹦极还刺激,从巅峰颠倒谷底,再把你扔上去。
以下我会分享我的学习经历(不要问我怎么学或者学什么,牛客那么多大牛分享过经历,你自己难道只会做伸手党?也不要问学不下去了怎么办?你难道这么懦弱?更不要问我要不要学?你菜不菜难道心理没点*数吗?别人有提到又有价值学就是啦)
一:学习书单
(1)C++:(java参考其他大牛)
《primer》 (尽量不用plus 比较浅)
《深入理解C++对象模型》 (能够很深解释面试官的提问)
《Effective C++》 (能够应付很多问题)
《STL源码剖析》
(2)数据结构与算法:
《传说大牛的ACM很给力》 (菜鸡大三才知道有这比赛,哈哈哈..)
《左程云》 (没有收到左老师的广告费@左程云)
《程序员代码面试指南》 (@左程云:广告已欠费)
《剑指offer》 (滚瓜烂熟)
《leedcoed/oj》 (费神费心去学去刷去总结)
《算法导论》 (大神,反正和我卵关系都没有)
(3)计算机网络:
《计算机网络》 (谢希仁6版,建立概念)
《TCP/IP协议卷1》 (有空卷2 3都可以攻下)
(4)操作系统:
《深入理解计算机系统》
(5)数据库:
《Mysql必会必知》
《Mysql技术内幕》
以下算是一个小拓展,毕竟不能只会基础吧,要不真的在大牛面前都被侮辱的机会都没有了。根据个人感兴趣去学。大牛强的地方不止于此。
(6)并发编程:
《C++并发编程实战》
一些C++内存模型、memery_order、原子操作,以及一些基于锁的数据结构(将STL的结构可多线程访问)、lock-free结构的设计
(7)网络编程:
《Linux多线程服务端编程》
陈硕写的Muduo网络库,基于Reactor模式,灰常不错的书
《深入理解Nginx模块开发与架构解析》
Nginx多线程的异步处理框架,很值得学习
《libevent源码深度剖析》
也是一个很不错的开源框架,很遗憾还没来得及学。
360用这个框架构造了一个项目在github可去参考下
(8)一些源码值得读:
epoll源码
shared_ptr源码
第七点网络编程中所有框架源码
TCP/IP源码,自己移植一个小型lwip协议栈顺便去读了源码,根据TCP/IP卷理解源码,学的不错,后面面试也被一直怼这个
二:面试经历
A(一面):
一面的面试官是我遇到最好的一个,没有之一。他是那种会去一点点挖掘你的优势点,不会瞧不起你,从你的简历中看到你的强项。对我的问题也是极细致地回答,因此产生对阿里极好的印象
1.Nginx负载均衡
2.Nginx框架实现
3.Nginx进程绑定个数,为什么要这么做
4.Nginx处理惊群
5.大数排序处理
6.Linux基本命令 查看进程等等
7.epoll
8.链表倒数k节点
9.链表环判断
A(二面):
二面的面试官java的,对我的项目C++底层还有TCP/IP移植不感兴趣,对C++的并发编程无锁结构不懂(有别于java),全程尬聊挂了我。
B(一面):
百度一面也是极好的面试官,投缘面试了一个半小时,后面基本都是面试官在说哎呀时间不够了,快一点,我们下一题,又或者讲到一半面试官说哎呀,看来你是懂得,时间不多下一题,到最后实在没时间只能道谢说这里面试过了
详详细细地把我会的彻底摸了一遍,以下列几个我面试不懂的
1.printf函数的实现和原理
2.TCP/IP中一个三次连接防止洪泛攻击。争论内核花费的内存是否值得
3.知不知道libevent,知道但还没去学
B(二面):
自不量力投了百度北京岗(垃圾还想和北邮北***华北航比),二面面试官女的,后台主管,后来在牛客上发帖,发现当天所有的人都败在他手下,两个简单问题后直接开鲁系统设计。
1.大数据处理bitmap相关
2.strcpy函数
3.看我写的比赛,问我整个物联网的设计............................
4.epoll
5.问了一个极难的系统设计,她说了句算了,问你肯定不会,换个简单的说法,百度管理那么多网站,怎么知道哪个网站什么时候更新,数据库怎么设计。
简单回答了那张表的东西,然后接下来就问我那个网站更新的算法怎么设计。gg
知道自己肯定跪后面也无心记题目。反正实习的大牛们可以指点下我们这些菜鸟
T(一面):
T家很可惜,在我疏忽中答错几点.........很懊悔,不过也涨知识,一下讲述错误点给你们些提醒
1.TCP/IP协议底层的一些东西
2.如何用UDP实现一个TCP,能保证效率比TCP高
3.项目讲错了一个致命点,当初鬼使神差扯到Nginx框架,脑袋进水了,说一个进程打开了文件描述符fd,加入队列,另外的进程从这队列拿fd。我有毒啊.....................然后欢笑声中打出gg
Bilibili(一面):
为什么把bilibili提到这么前,且听我慢慢述说。自我介绍的时候面试官说我也从这学校毕业的,我那个兴奋啊,这一轮妥妥的。结果事与愿违,我怀疑这师兄跟我一样对这学校有仇,什么基础都不问我,直接拿我并发开怼,怼完我会的部分,后面就开怼linux内核对高并发的优化,因为以前还是读过一些源码,还能回答一小些,后面越怼越深,实在无力回答。最后说我还欠很多东西没学,让我去做C++中间插件开发又完全不会回去好好学习吧。不过认识到自己真的菜的抠脚。
后面的公司面试就不举例了,因为你们可以找到各位大牛的面试经历足以应付(感谢一波大佬和牛妹的总结帖,在此真的拜谢素未谋面的你们,真的),都是重复又重复再讲那些问题和东西,还有就是开怼源码框架和项目,这些都是你个人的优势点吧,没有统一性,说真的,面bat是能够让我成长和学习到东西的,很感谢bat给我的面试机会,毕竟我这么菜还能有小小的希望去学习和成长很满足了。至于公司的选择考虑诸多因素,城市、父母、薪水等。
三:学习资料总结
站在巨人的肩膀上
(1)计算机网络:后续发总结文档
(2)C++:后续发总结文档
(3)STL系列:
1.源码剖析
2.算法系列
(4)大数据类提问:
1.十道海量数据处理面试题与十个方法大总结
2.如何从三亿个整数里面找出不重复的数字的个数
(5)数据库:
1.MySQL索引背后的数据结构及算法原理
2.事务的隔离级别
(6)数据结构与算法
1.程序员面试宝典+剑指Offer+算法100题+15个经典算法下载
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10208 &extra=page%3D1&page=1&
2.坚持完成这套学习手册,你就可以去Google面试
3.数据结构与算法系列
4.牛课堂 左程云 (嘿嘿嘿)
5.程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列
6.数据结构常见的八大排序算法
7.白话经典算法系列
8.通过金矿模型介绍动态规划
9.动态规划:从新手到专家
10.动态规划0-1背包问题
11.很特别的一个动态规划入门教程
12.教你彻底学会动态规划——入门篇
13.背包问题九讲
14.动态规划总结与题目分类
15.五大常用算法:分治、动态规划、贪心、回溯、分支限界
恩,最后真的还是想感谢牛客这个平台,真的真的让我不至于那么无知天真,成长很多。
后续我并不会因为找到offer离开牛客,毕竟想念左老师,还要继续听他的课,刷算法题。还要给未来的你们一些鼓励和支持帮助吧。毕竟相信给我帮助的都希望我们把爱传递下去,没其他的祈求了。一直传递下去,让牛客能够迸发出他该有的魅力。
后续还请大家关注我发的帖子,应该是一些学习资料的总结(可能大部分网址让你们自己去学习),当然我只是站在巨人肩膀上给大家总结而已,那些巨人们如果觉得我侵权了,请谅解,在这道个歉。
最后的最后,想请问各位大佬深信服和迅雷选择哪个?迅雷的后台开发到底做的咋样?或者打算去深信服/迅雷的举个爪。谢谢
再次跪拜谢过牛客...
to be continued...