why 西交利物浦大学·2022届
APP 内打开
分享
8
98

腾讯,百度,京东,美团,VIVO,VIPKID面经和一些感想

一直在犹豫这个放面经到底好不好,但是犹豫最近发生的一些事,觉得有些话还是要现在说出来,给各位一些激励。


内推基本结束之后,由于妹子这边找工作困难比较多,目前就主要帮妹子投简历,总结编程题,总结测开面经,跑线下宣讲会。


有些话想给程序媛们说一下。不管怎么样,明年你都会变成一位职场女性,即是今天被diss的再惨,擦干眼泪,妈的!下一场!这两个月的辛苦,带给你的不仅是offer和技术上的成长,更有心态上的成熟和自控力的加强。


有些话想给暂时不如意的非科班兄弟们说一下。如果说基础,我们可能不如科班同学扎实,但是我们能做的就是调整好自己的心态,总有神仙在打架,咱管不着,他们在上面飞,我们走好自己的路,如果成功再接再厉,如果失败,没关系,老子又不是专门搞这个的,后面机会还多。

每一次失败之后,我总在自我调节,作为一个男人,这点压力,这点失败,只要不要了老子的命,老子就和你们刚到底!

只有这样,等自己到了上有老,下有小的时候,一大家子人压力都在你身上的时候,你才能更加从容的应对。


下面上干货:

求职方向:C++后台(非科班)

本人从今年三月份才开始打算找互联网公司,四月份确定后台方向。其实四月份的时候,我连socket,bind,listen是啥都不知道。但在找好方向之后,就是放手去搞。其中重点看的知识点,就是之前的面试高频问题。


建议:如果面经已经看得差不多了,感觉没什么新鲜玩意了,但还没有如意offer的同学,就可以看看书,复习复习项目,刷刷题。如果现在看面经还觉得问题很多,那就抓紧看面经。


书籍推荐:

linux方向:《鸟哥的Linux私房菜-基础篇》、《shell编程从入门到精通》

操作系统:《操作系统精髓与设计原理》

后台方向:《Linux多线程服务端编程:使用muduo》、《Linux高性能服务端编程》、《后台开发核心技术与应用》

数据库:《SQL必知必会》、《高性能MySQL》

网络方向:《TCPIP网络编程》、《TCP-IP详解:卷一》、《UNIX网络编程》、《图解HTTP》

C++语言:《Primer c++》、《Effective C++》、《STL源码》、《深度探索C++模型》


就这几个月的时间,书不可能都看完,但是看到面经上的问题,和自己面试过程中回答的不好的问题,我都会去百度找答案,发现很多博客也是在抄书,最后干脆自己直接从书上找答案吧。

但是APUE,UNP,TCP详解,STL源码这几本圣经还是要从头到尾看一下。如果现在觉得刷面经对自己提升慢了,可以回过头从书中找答案。


实习腾讯一面:

1、自我介绍

2、是否用过vector,map。vector和map的底层实现?vector填充元素满了之后怎么办?

3、TCP,UDP区别?TCP三次握手?time_wait发生在哪里?为什么需要等待两分钟?边界性什么意思?

4、描述一下快排,复杂度?最好复杂度?最差复杂度?分别对应什么情况。

5、epoll和poll 区别。epoll底层实现是什么?epoll一定比poll好么?epoll的两种工作模式?

6、平时怎么调试C++?linux 下常用命令?查看当前进程端口?gdb的常用命令,core dump怎么办?

7、你有什么问题要问的?(面试官嘱咐,对于问题需要仔细探究其原理。)


内推腾讯二面(一面当时忘记了):

1、介绍自己的项目。

2、Reactor怎么回事?那你为什么要用Reactor模式?

3、epoll函数怎么用的?

4、如果现在打开你的网站慢了,你觉得哪些地方会有问题?

5、如果给你一个数组,里面的数是0-N,你有哪些方法实现,空间复杂度和时间复杂度都是最低。


内推腾讯三面:

1、首先进行一个自我介绍吧。

2、C++网络库用在哪里?如何理解阻塞和非阻塞?同步和非同步?

3、了解堆排序的原理么?如何进行堆排序的?手写一个模板类的堆排序。

4、如果让你用线性空间,只知道头结点,如何存储一个key-value数据结构,让他时间复杂度都尽量低。

5、我有n个节点m个任务,每个任务可以访问若干个节点,每个节点有自己的上限流量,也有不同的价钱,

每个任务可以拆分成不同大小的任务,分给不同节点去完成。如何保证总价最低。

最后这个问题我是真的没懂,不知道题是不是这个意思,一般的贪心,动态规划都不行,大家大概看一下。

内推腾讯四面:

1、介绍自己的项目。

2、你都考虑过哪些模式?Preactor和Reactor模式区别?

3、进行过测试么?能达到一个什么样的性能?

4、性能的瓶颈是在哪里?top命令中三个值含义是什么?CPU负载是什么?单核可能超过1么?

5、怎么用你这个库,几个基本的调用API是什么?

6、软件语言上写的问题?硬件资源的问题?

7、最高多少的QPS?有么有看过别人的网络库?他们是怎么写的?

8、局域网监控项目是什么?用在哪里?

9、实验室项目做什么?简单的讲一下?

10、你有什么要问的?

部门大佬最后给的建议:

1、看看自己服务器瓶颈是在软件那个部分?

2、将最终错误落实在硬件上。

3、多看看别人网络库是怎么写的。


内推百度SRE一面:

1、首先自我介绍

2、说一下从输入www.baidu.com到响应,到底经过了什么。每一个协议分别是什么。

3、DNS怎么回事,如何查找对应的IP地址。DNS用什么协议。广播是怎么回事?

4、如果手机查看网页,响应变慢了,原因会有哪些。

5、Linux时间系统到底怎么回事,如何确定。网络库中定时机制怎么回事。Linux时间精度多少?如何统一很多机器之间的时间。

6、你了解什么网络攻击方式?

7、进程,线程对于CPU负载来说,区别是什么。

8、12个core,多少进程和线程可以让core达到90以上?

9、排序算法中,熟悉哪一个?什么时候适合用冒泡?什么时候适合用快排?快排和堆排区别?STL中排序用的哪一个?

10、给你64G int类型数据,32G内存,12个core,如何快速高性能对这64G数据进行排序?


内推百度SRE二面:

1、首先自我介绍?

2、你觉得那个项目有难度,我问你?

a、什么是reactor模式?

b、你觉得你的网络库有什么作用?可以用来干什么?

c、多线程有什么优势?多线程怎么实现通信?多线程的声明周期是什么?

d、锁是怎么回事?底层是什么?读写锁怎么回事?

e、还是昨天的问题?十二core的计算机,和线程有什么关系?你怎么发挥它这个性能?

f、C++11新特性?你用到了哪些?干什么用?

3、四次挥手是什么?HTTP服务器是谁先断开连接?CLOSE_WAIT是怎么回事?如何解决该问题?TCP拥塞控制怎么回事?

4、ping是怎么回事?ICMP是什么?介绍一下ICMP?哪一层的协议?

5、怎么进行路由器探活,寻址?路由器下一跳如果断了,怎么知道?让你自己设计一个路由器协议,怎么设计?哪一层?探活周期?

6、了解操作系统么?虚拟内存是什么?地址映射怎么回事?如果内存都是无限大的可以不用虚拟内存么?

7、给你一个树,不知道每个节点相关的子节点,父节点,可以知道左子树,和兄弟节点。将他们存储在文本中,如何从文本恢复这个树的整个结构?

8、你有什么要问我的么?


内推百度系统部一面:

1、首先自我介绍。

2、能说一下什么是Reactor模式么?那和Preactor有什么区别呢?

3、网站压测为什么会有错误呢?错误在哪里?如何改进呢?如何查看IO,如何查看netstat。如何查看负载。

4、如果你的内存不用,但是常用的数据结构不能存储你当前的数据,怎么办?LRU

5、vector的迭代器什么情况下会失效。

6、map和list有什么区别?底层数据结构是什么?

7、红黑树和B+树的区别?分别有什么优点,各自操作的复杂度?

8、tcp和udp有什么特点?tcp和udp适用哪些场景?调用的API分别是哪些?

9、tcp状态机了解哪些?close_wait和time_wait分别怎么回事?

10、HTTP首部,你知道哪些内容?cookie和fashion分别是什么?expire分别是什么?

11、epoll函数和select比有哪些优点?epoll底层实现是怎么回事?ET和LT工作模式?优缺点?

12、C++语言虚函数?用处?缺点?哪些应该用,哪些不能用?

13、四种转换模式分别是什么?inline函数的优缺点?

14、new和malloc的区别?new的重载用在哪些情况?

15、数据库用在哪里?如何优化?索引怎么回事?

16、再问两个数据结构题:最大连续子数组和?100亿数据,找最大的N个数据?


内推百度系统部二面:

1、首先自我介绍。

2、介绍一下自己的项目。每个项目里,每个人都负责什么内容?

3、如何理解阻塞和非阻塞?同步和异步?

4、HTTP服务器,完成了哪些功能?POST,GET。

5、有过什么方式改进自己的HTTP服务器?如何进行测试的?

6、HTTP服务器头部你了解哪些关键字?200,206,302,404分别是什么意思?

6、TCP协议和IP协议的区别?

7、TCP如何进行拥塞控制?RTT怎么回事?

8、如果让你重新设计一个TCP协议,你该怎么设计?针对无线卫星链路,带宽资源丰富,但是经常丢帧。


内推百度系统部三面:

1、首先自我介绍,主要想听到你本科和研究生期间做了些什么?让自己分别在哪些方面有所成长。

2、为什么要做这里两个项目呢?

3、介绍一下你这个网络库吧。最终有没有使用在什么地方?硬件的配置是什么样子?

4、有没有进行过测试?webbench里面的错误代表什么呢?503是如何返回的?

5、错误概率是怎么回事?你觉得是哪些方面引起你这个错误的?

6、实验室的项目都在做什么?用普通的语言组织一下,给我讲清楚。

7、你有什么要问我的么?


内推京东云一面:

1、首先自我介绍

2、介绍一下项目?局域网监控?

3、UDP和TCP区别?陈硕网络库怎么实现?TCP为什么需要三次握手,四次挥手?

4、TCP状态机,timewait和closewait是怎么回事?为什么是2MSL?

5、你怎么理解非阻塞?怎么设置?errno线程安全么?C++重载函数const可以作为重载依据么。

6、epoll函数理解?两种工作模式区别?

7、线程和进程的区别?线程共享哪些内存?

8、进程间通信方式?PIPE怎么回事?

9、两种信号不能屏蔽?子进程继承父进程的什么?fork,vfork?COW?

10、孤儿进程?僵尸进程?

11、进程sigaction和signal区别?

12、多线程编程,静态管理,读写锁的实现?compare_swap函数?CAS?

13、死锁的四个必要条件?

14、TCP的拥塞控制?

15、编程题,求两个链表的差别。


内推京东云二面:

1、首先自我介绍。

2、如何设计一个hash表?你会考虑哪些因素?哈希函数怎么选择?

3、hash表的容量你怎么设计,负载因子怎么考虑?

4、如果有一个数据库,大量的读和和少量的写,你会怎么处理?考虑哪些因素?

5、如果要加锁是在数据库加锁好一些,还是在服务端直接加锁?

6、数据库联合索引的命中问题?如何查看是否命中。

7、B+数和红黑树的区别?Redis移植性怎么做?

8、C++怎么由代码转换成二进制数据?动态链接是怎么回事?每个过程都有些什么工作?

9、出了一道链表两两反转的问题。现场写代码。


内推美团一面:

1、首先自我介绍

2、了解Web层开发?数据库索引了解么?聚簇索引,非聚簇索引?索引分类?

3、了解数据库都由哪些引擎?分别有什么区别和使用场景?

4、了解分布式?高可用?如何保证节点集群的同步?Nginx了解过么?

5、对象的重写和重载?

6、设计模式里面,单例模式?实现单例模式的双重校验。

7、epoll函数怎么理解?epoll函数在别的哪些地方有用到?

8、手撕:两个链表的重合第一个节点。


内推美团二面:

1、首先自我介绍

2、数据库基本操作?如何建立索引?还有一些数据库基本问题。

3、手撕:有时间区间,判断昨天送外卖的峰值。(这个题做了快三十分钟,主要是外卖订单可能是前天的,昨天的或者今天的)。

4、平时都怎么学习?

5、自己的博客和个人网站有么?

6、你有什么要问我的?


内推美团三面:

1、首先自我介绍一下。

2、介绍一下自己的项目。(疯狂怼项目了,连实验室的都问了,楼主搞通信的,面试官让我用白话给面试官讲了一些技术点。)

3、web方面的应用多么,问了问HTTP?

4、智力题:一天24小时,时针和分针会重合几次?

5、类似于百度地图,如何求A地到B地的路径,刚开始被面试官套路了,用各种分类讨论了半天,最后才发觉面试官想问的是有向图求最短路径?说了一下方法是什么?迪杰斯特拉算法作用,复杂度?

6、你有什么问题要问我的?

内推VIPKID一面:

1、介绍一下自己的项目。

2、自己选择方向问题。

3、说一下三次握手?

4、说一下什么是TIME_WAIT,什么是CLOSE_WAIT,CLOSE_WAIT会遇到什么问题?

5、说一下创建socket时候,如何创建阻塞和非阻塞的,几种方法?listen函数怎么调用,参数的含义。

6、说一下epoll和select是什么?相比优缺点是什么?epoll两种工作模式?效率对比。

7、问一下C++的知识?static特性?const特性?引用和指针区别?

8、说一下什么事override和overload?virtual什么意思?virtual =0什么意思?

9、你知道哪些排序?说出复杂度?哪些是稳定,哪些不是稳定?

10、你有什么要问我的?


内推VIPKID二面:

1、首先自我介绍。

2、C++默认构造函数怎么回事?什么时候会用到默认构造函数?

3、C++的继承是怎么回事?

4、shell常用么?awk使用方法?如何读取第一百行到第二百行数据?

5、说一下select和epoll的区别?epoll的两种工作模式?

6、select和epoll底层实现,数据结构有什么区别呢?

7、如何根据前序遍历和中序遍历恢复二叉树?必要条件是什么?如果值重复,那怎么处理?

8、了解LRU算法么?叙述一下?LRU怎么实现?按照时间来实现?

9、如果是在LRU加入频次这个影响因素怎么解决这个问题呢?


内推OPPO一面:

1、自我介绍

2、介绍一下你做的和后端有关的项目。

3、介绍一下Reactor网络库。线程池怎么实现?怎么用?用过的和没有用过的怎么区分?

4、多线程和多进程区别?用的什么锁?怎么解决共享变量问题?你会怎么选择用多线程还是多进程?

进程间通信方式,你知道几个?

5、C++语言虚函数?纯虚函数?栈和堆的区别?哪些变量在堆,哪些变量在栈?

6、了解单例模式么?一般会在什么情形下用到?

7、一千瓶药,只有一个毒药,若干小白鼠,小白鼠吃了毒药第二天才回死亡,问你至少需要多少只小白鼠?

8、100万集合数据,怎么找第二个,怎么找第k个?

9、利用shell写一个文字处理脚本,如何只获取第三行数据?shell和pthyon用的多不多?分布式有什么理解?

10、你有什么问题?


内推VIVO一面:

1、首先自我介绍一下。

2、学过哪些和计算机有关的课程。操作系统?网络?汇编?

3、挑一个你觉得难度大的项目,讲一下?为什么做这个项目?

4、说一下你项目中对于多线程的控制方法?如何解决竟态问题?

5、讲一下你对网络编程的理解。

6、讲一下,你对C++面向对象的理解?C++内存分布是怎么分布?

7、讲一下资源泄露控制?你对智能指针底层实现?

8、页面置换?虚拟内存?

9、你还有什么要问的么?


内推VIVOHR面:

1、首先自我介绍。

2、为什么想做软件开发?什么时候确定的这个目标?

3、一般通过那种方式学习效率高?

4、你觉得你和计算机专业相比有什么优势呢?

5、你做过这些项目,哪些对自己的提升比较高?为什么?

6、你最近都在看什么书?

7、可以说一下你的本科成绩和研究生成绩么?四六级通过了么?

8、你还有什么问题么?


其他的HR面我没写,感觉参考意义不大。华为感觉就是讲项目,没什么实际问题。

不过最后想和大家分享一下华为优招总监面的一个问题。

总监:如果我今天不让你通过,你会花多长时间调整自己。

我:没关系,我失败的次数已经很多了,如果这次失败的话,我会用一天时间调整自己的心态,总结失败经验,然后继续准备,避免以后继续犯同样的错误。

发布时间:2020年07月02日
用户头像
我来说两句…
共 8 条评论
我是摩羯座 〃 中国海洋大学·2022届
学习能力爆表,我去年10月开始学的,比你差远了
2020年08月03日 回复
长腿小姑娘 浙江工业大学·2022届
今天下午面百度,又去送死一波。。。说实话,并不想去。。。
2020年08月03日 回复
鹿童谣 西南民族大学·2022届
学习能力暴强啊老哥,这才几个月,这么多书全看了,佩服
2020年08月04日 回复
seven777 首都师范大学·2022届
手动点赞
2020年08月04日 回复
绝不放开 北京理工大学珠海学院·2022届
大佬,是研究生才问这么多难问题吗。。。
2020年08月03日 回复
王詠 北京师范大学·2022届
收藏加赞
2020年08月03日 回复
长眠狮 武汉科技大学·2022届
写的好极了!!给加鸡腿了!🍖🍖🍖
2020年08月03日 回复
一只小团子 中国石油大学(北京)·2022届
棒,你的妹子好幸福
2020年08月03日 回复