双非本科的秋招之路

写下我的双非本科的秋招之路。

在秋招过程中拿到以下几个offer

美团sp后台开发、网易互娱 游戏研发工程师、360服务器开发、深信服 c++开发、多益网络 游戏研发工程师


校招主要问的是:基本语言,操作系统,计算机网络,数据库,数据结构与算法。在这里我推荐两个GitHub项目:Cyc2018Skill-Tree,cyc2018偏向于java,Skill-Tree偏向于c++。但里面总结的基础知识都可以看。设计模式有些面试官会问到,但比较少。而我主要投的是c++后台开发,所以我还需要准备网络编程的知识。对于ACMer来说,数据结构与算法稍微复习下刷下剑指offer就可以了。不同的面试官问的侧重点不同,但主要还是从你的简历上来问,所以简历上写的一定要熟悉,不然问到不会的话会让面试官觉得你简历上的其他也很水,印象就差了。我由于数据库不是很熟练,就直接把这个在简历上删除了,问了就直接说不会,反正问深了也不会。对了,在面试的时候要适当的引导面试官问你熟悉的知识,比如问http协议时,我顺带提一提http是在tcp的基础上实现的,http是在应用层而tcp是在传输层。接下来面试官可能会问你一些tcp相关内容。在简历上每种都可以细说几个你熟悉的,这样面试官就会根据你写的来问。比如在计算机网络上,我简历上写了对tcp,udp,iP,http等协议有一定的了解。那面试官问计算机网络时大概率会问这些。

在准备期间也读了一些书籍

细读的有《TCP/IP网络编程》,《Linux高性能服务器编程》,《后台开发》,《图解HTTP》,《图解TCP/IP》,《剑指offer》。

泛读的有《STL源码剖析》,《深度探索c++对象模型》,《effective c++》,《深入理解计算机系统》,《程序员代码面试指南》,《TCP/IP详解卷1》,《大话设计模式》,《计算机网络》。

在面试过程中,对于一个知识点面试官可能会一直追问你,直到你不会为止,所以这就要看你对一个知识点的了解深度了。如果某个知识你知道怎么去使用它但不熟悉它的原理,可以说你对这个知识一窍不通。比如c++种常见的stl库中的vector。它是是一个可变数组。但它实际是用一个固定的数组储存的,并且用size和capacity来计数,size表示储存元素的大小,capacity表示数组的大小,当size>=capacity时会重新申请内存并释放旧的内存,拷贝是通过浅拷贝实现的,以1.5-2倍的大小扩容,而为什么以这个倍数也可以通过数学推导算出来...详细的可以具体百度。原理很重要,原理很重要,原理很重要。推荐书籍《stl源码剖析》

C++主要问的是基本的语法操作,有时会考几个字符串的函数,比如内存拷贝函数,写这个需要注意内存覆盖问题。虚函数是问的最多的,它的基本原理需要搞懂,推荐书籍《深度探索c++对象模型》。内存泄漏怎么来的,怎么解决;STL中的各种库,map与unordered_map的区别;vector和list的区别;内存池怎么实现;深拷贝浅拷贝等等;

操作系统:进程与线程、IO多路复用、内存管理、Linux基本命令。阻塞与非阻塞,异步与同步;ET和LT的区别;进程和线程的通信方式;查看系统各种属性的命令,出现频率最高的前十个IP的命令等等;

计算机网络:HTTP、HTTPS、TCP、UDP、IP、arp、rarp等常见协议,应用层、传输层、网络层这三层是必须要掌握的。TCP/UDP是必问的,为什么会有TIME_WAIT状态,为什么不是两次握手,为什么需要四次释放,什么是半连接状态;UDP怎么保证可靠;session和cookies的区别。在浏览器中输入URL后的流程等等。

海量数据处理,对于海量数据的处理会经常问到,这些在Skill-Tree项目里都有介绍。

数据结构和算法,这个对于ACMer来说,复习起来就轻松些,但需要注意一些细节问题,问的时候往往会问一些细节问题。LRU缓存设计建议写下(LeetCode146),问到三次了。其它的话多刷刷剑指offer,然后把数据结构复习下。


下面写下一些面试后写的面经,记得不是很详细,所以会缺很多。

美团点评:

美团点评一面:

编程题:

[4,5,6,7,0,1,2,3]...之类的数组查找一个target值

多线程和多进程

TCP/UDP

哪些场景使用TCP

内存管理,虚拟内存,为什么虚拟内存开2倍

Linux常用命令

为什么会查看cpu的信息,主要查看哪些

拿了哪些offer

建议换java吗

算法论文

二面:

忘了

三面:

ET和LT

阻塞,非阻塞,异步,同步,使用场景

编程题问题忘了,但记得是用线段树写的。


网易互娱:

一面:

数组al[0,mid-1]和al[mid,num-1]都分别是有序的,将其merge成有序数组al[0,num-1],要求空间O(1),时间O(N)。

N个人都有一个权重,随机选取m个人。怎么取?

二面:

上来就问学过图形学吗?没有

C++变成可执行文件的过程

New,malloc,delete,free的

堆和栈(然后往外扩展问了二十多分钟,怎么设计一个效率高的内存分配)

10万个ip段,每个ip段对应一个城市,给定一个ip,快速找到对应的城市

一副扑克牌,随机打乱它,可以用rand()函数


360:

一面:

构造函数能否是虚函数,为什么

拷贝构造函数和赋值函数。拷贝构造函数有什么缺点

空类的sizeof大小。

类A空,类B继承A,B中有一个虚函数,sizeof大小

类A空,类B中有一个虚函数和一个类A对象,sizeof大小

函数重载。如果返回值不同或者参数位置不同是否是重载

虚函数是否可以是内联函数

函数指针和泛函数

局部变量,全局变量,静态局部变量和静态全局变量

进程的三种状态,就绪有那些

Cpu调度方式

Vector的扩容,如果数据量很多扩容会怎么样,怎么设计更好的

map和unordered_map的区别

TIME_WAIT讲一下,为什么要这个

TCP三次握手建立完后客户端突然断网后的情况

流量控制讲一下

如果接收方数据处理不过来会发生说明情况

ping有没有端口


二面:

父进程fork一个子进程,子进程申请4k的内存,它们的内存分布

写时复制讲一下

多进程和多线程的区别

海量数据每行一个IP,求出现次数最多的5个ip

编程题:

中序遍历

单链表中的中间节点


深信服:

C++一面:

编程题:

每次走一楼或者两楼,到n楼有几种方法。

用define写一个结构体类型的偏移地址

常见的基础问题

C++二面:

问了笔试中的编程题

写了一个dfs问题。

问了项目


算法一面:

KMP,AC自动机。

匹配允许错一个怎么匹配

算法二面:

忘了

算法三面:

一维坐标n个点中选m个点,使的相邻两个点的最小距离最大化

n*m的方格,当前位置种了数,上下左右就不能种树

10万以内的素数,选取某个子集,子集之和也是素数的有多少种

长方形,判断某个点和长方形的位置


多益网络:

自我介绍

有没有项目经验

竞赛中印象最深的是什么题目

编译性和解释性语言的区别

桶排序和跳跃表排序

哈希冲突

不用递归实现斐波拉系数

对象的生命周期

淘宝购物栏的推荐怎么实现

游戏的排行榜怎么实现(如果每一个用户都能看到自己的排名,当修改时又怎么实现。如果显示的排名很少有怎么实现)

操作系统中编译和链接是什么

操作系统中系统调用和用户调用

数据库了解吗(不了解)

空闲时间的安排

如何看待互联网加班

如果已经回家了的话出现的bug怎么办

还投了哪些公司

当前的求职情况

十分钟编程题:有一个产生n个数的随机函数;请写一个函数ChooseKey,在给定的权重表中,根据"权重"随机抽取一个"字符"并返回


#网易互娱##美团##360公司##校招##游戏研发工程师##C++工程师##面经#
全部评论
校友很强啊
1 回复 分享
发布于 2019-12-04 18:26
港神
点赞 回复 分享
发布于 2020-02-27 11:03
楼主很强哦,佩服佩服
点赞 回复 分享
发布于 2019-12-05 14:02
沾沾大神
点赞 回复 分享
发布于 2019-12-05 12:59
港神牛批🐮
点赞 回复 分享
发布于 2019-12-05 12:35
点赞 回复 分享
发布于 2019-12-05 11:58
可以哦,想起了去年的我
点赞 回复 分享
发布于 2019-12-04 20:25
美团今年收双非莫?
点赞 回复 分享
发布于 2019-12-04 16:04

相关推荐

11-08 16:10
门头沟学院 Java
1. 介绍实习工作2. 面试官让我言简意赅地回答,不要展开太详细,主要要围绕你针对什么问题,做了什么事,实现了什么效果3. PD分离部署是什么意思,为什么能够提高吞吐量(实习)4. 面试官主要想听到,prefill阶段是计算密集型任务,decode是内存密集型任务5. 模型服务部署成功后,用户输入一个信息,在PD分离部署下数据链路是怎么样的6. 项目里写的定义的监听器为了保证数据的一致性,这里的数据一致性是指什么数据,他们为什么会不一致,是如何同步的7. K8S的pod之间是如何通信的8. docker的原理,它和传统的虚拟机有什么区别,它有什么优势9. 项目里写了优化数据库和缓存,是如何优化的10. 为什么要建覆盖索引11. 什么场景下会建立覆盖索引,建立了覆盖索引为什么速度更快12. 索引表里面会存数据吗?13. mysql的底层数据结构是什么?14. 为什么要用B+树不用其他数据结构15. redis的I/O多路复用16. ip和tcp协议的作用17. tcp协议是如何保证数据的可靠传输的18. 重点不在三次握手,握手只是方式,要答序列号同步、确认机制类似的这些19. tcp包的序号是如何定的,比如我有一个很大的包,分成了50份,这50个数据包是如何编号的20. 手撕一个计算器,输入一个字符串,输出答案,字符串只包含括号和+、-
查看17道真题和解析
点赞 评论 收藏
分享
11-05 22:36
已编辑
中山大学 Java
暑期在阿里实习,觉得转正概率很大且抗拒面试,所以一直没有投递简历,在9月中旬拿到转正意向后才正式开始秋招。整个秋招一共投递了5个厂,绝对不去的就不投(讨厌面试,遇到一个老登一天的心情都毁了)。tl:美团-营销中心/优惠券  9.17-9.22  意向字节-抖音  9.30-10.10-10.16-10.20 意向腾讯-微信视频号  9.25-9.30-10.31面委1-10.31面委2 主动终止拼多多  10.18线下4面 意向小红书-商业技术  10.21-10.28-11.06等小红书面完秋招就结束了,整体来看面试几乎没挂过,有许多经验可以与26、27届+的牛友分享。1. 最好8月初开始投递秋招。秋招还是越早越好,像小红书这种到10月流程推进的都特别慢,面试排的特别满,每轮都要约到一周后,导致现在还在流程中。投晚了心态会爆炸,9月底的时候看牛客说哪哪都没hc了我也焦虑。不过如果早期没有拿到offer,也要坚持投递和面试,我的面试大半都是在10月的,所以10月还是有hc的,同样11月也不放弃。2. 实习两段足以,个人认为盲目刷次数作用有限,不要被卷到。我有两端实习,第一段实习部门比较边缘,整个秋招面试几乎没被问过,所以这样看来一段有话讲的实习就够了。第一段实习可能没搞懂怎么偷项目,第二段就熟练了,往死里偷,看懂的代码都是自己的。干脏活不要紧,要主动去看其他人提交的代码,最好是比较新的代码。准备两个实习中比较复杂的业务或者难点,反复的讲,每轮面试都跟面试官讲这两个点,提前想好中间件挂了情况以及可优化的点。有的面试官比较注重细节,喜欢问具体的难点,希望你只讲自己做的(坚定把偷的当成自己做的,不要怂)。有的面试官比较重整体,会问你系统的上下游。3. 刷题范围:hot100+代码随想录+leetcode前100非hard+每个厂codetop前三页+(排序算法、哈希表、单例模式、死锁、多线程交替打印)。基本够了,超出范围的也没办法,做不出来的时候可以让面试官给提示。4. 八股范围:java八股+中间件八股+操作系统+计网+AI概念(rag之类的)。建议有时间先学一遍再背,不然记不住。操作系统和计网基本只有面c++才问会,java岗很少问。美团比较爱问八股。5.场景题。说实话,问的不多,我也不擅长答这个。可以准备几个,例如抢红包、微信朋友圈、直播间打赏排行榜、短链等。其他的就随缘答,不能尬住,多少得说两句。6.项目。当有了两端实习的时候项目就是凑字数了,几乎没人问。刚开始找实习的时候可以去知识星球上找,一个业务系统,一个AI项目。面试官现在很喜欢问AI,而他们其实也不那么懂AI。最后祝大家找工作顺利!
投递美团等公司10个岗位
点赞 评论 收藏
分享
这一次面试真的很感慨,能走到三面已经是我意料之外了。非常感谢我遇到的各位面试官,很和蔼,我不会的问题引导着我去思考,我也深刻地认识到我对于各个组件的底层原理理解的薄弱。一面:拷打了一些八股,对于我简历上的项目问了更深的一个层次,我勉勉强强回答上来,在问的过程中问到了一些偏底层的东西,比如说:C++在分配内存,操作系统,CPU等都做了些什么工作,为什么能够分配内存等。手撕了一道算法题,秒了。二面:被匹配到了基础平台研发部门,不得不承认这个部门的面试很难,开局手撕了两道算法题,秒了。然后没有问任何项目相关的问题,问了很多基础的知识,又一次问到了C++智能指针相关,C++虚拟内存分配等,malloc分配内存的全过程(如前128K使用了哪些系统调用,后面使用了哪些系统调用,这些调用做出了哪些优化等);TCP相关的一些知识;僵尸进程等相关知识点。答得磕磕绊绊,面完半个月没有信息,以为挂了,结果走到了三面。三面:面试官是一个很和蔼的大叔。当时的面试状态也非常糟糕,面的一塌糊涂,把面试官都面笑了,不知道该问我什么了。先是根据之前的面评,问了更底层的智能指针(共享指针部分)让我手写一个共享指针(非模板库)。我对于这些知识很多仅限于理论,平常都是写一些算法,项目上只是会用即可,有时候用法也记不清需要现查,确实很少用过这些。我凭借着印象大概描述了一下,存在优化上的问题。后面谈到了交叉引用,面试官让我用模板库里的实现一个交叉引用的案例,实话实说,想不起来。后面面试官又挑了redis问了关于快照与日志相关的问题,问到了快照在内存上是如何操作的,在保存为快照的过程中依旧会有缓存的更新,redis与操作系统都做了哪些工作等。不会,我凭理解与印象回答了一部分,答得不对。等等等等,一大堆抽象的事情。手撕代码并不是算法题,没有写过这种题,不会,真的想不出来。大致意思是有一个链表,你不能将其放到内存中,你有一个函数getnext可以取下一个数据,你不知道有多少个数据,你有一个函数next可以判断是否还有下一个。现在你需要随机的等概率的取出K个节点(每一个节点被选择的概率均为一样的),我的思路被驳回了,链表只能扫描一遍,不能重复扫描,各个节点之间被选择必须是独立的,选择节点必须是等概率的。最后没写出来。挂了。很难受很惋惜也很感慨。也怨不得别人,菜了就是菜了,挨打就立正。下去接着下功夫吧,只能看客户端能不能把我捞起来,或者春招再战。不过拼多多的工作强度确实很大啊,哈哈,一面的面试官一脸的憔悴,黑眼圈特别大。
查看11道真题和解析
点赞 评论 收藏
分享
评论
28
241
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务