从9月15号开始到昨天签完两方,一个多星期的面试虽然很累,但是收获很多,下面就跟大家分享下我面试的一些经验。               我本科是非985院校,考研进电子科大,我们团队大神很多,最开始进来的时候完全是渣渣(虽说现在也很渣),压力很大啊,还好同一个导师有个大神,各种抱大腿,加上团队良好的氛围,自己也一点一点在进步。按我自己的经验来说,我觉得一定不能有太大的心里负担,如果觉得自己不够优秀,就努力让自己变的优秀,好的学习心态也很重要。               校招加上实习,我一共面了4家互联网公司,阿里,腾讯,百度,美团。阿里从实习开始就各种被鄙视,实习和校招两次内推都挂了,校招笔试也没过,注定与阿里无缘。腾讯实习的时候进了二面,不过二面没有通过,这次校招,运气很好,加上遇到的面试官也很不错,很幸运的拿到了腾讯的offer。百度是参加的校招,报的是北京的岗位,结果因为3面面试官的原因,最后拿到的是上海的offer。美团面了一天,三面面完,然后就没有然后了。              接下来说一下面试经验,我报的都是后台相关的岗位,因为只会C/C++   阿里:           阿里实习一面的时候是去了成都的支付宝,先是做了一套试卷,好像是4个编程题,做完拿着试卷上去面试。面试官人不错,先是聊了下项目,然后根据我的项目问了一些问题,主要有线程间的互斥,TCP状态机。接着开始看刚刚做的试卷,我记得第一个题是实现strcpy,第二个是写单例模式,第三个是随机数,第四个记不太清了,虽说答的不是特别好,但是一面还是很幸运的通过了。过了一天接到二面的电话,从杭州打过来的,语气很严肃,技术问的不多,但是问很多你的优缺点,你是通信为什么要做技术,你有没了解过开源项目,,,答的一塌糊涂,结果就挂了。           校招内推的时候,为了保险起见,投了测试,结果接到电话,问我你简历上都是开发的项目,为什么做测试,我就各种说因为测试也不错啊,什么还比较喜欢,接着问了我一个开放性的问题,有一款眼镜,能够识别出一颗树上树叶的数目,问我怎么测试。测试并不会啊,开始各种给他扯,说了好多种方案,感谢面试官并不满意,结果也就呵呵了。               腾讯:                                 腾讯我报的一直是后台开发,实习的时候,一面基本都是问    C++    面向对象相关的问题,然后让写了代码,问了    C/C++    中怎么分配和释放内存,最大堆的最坏运行时间复杂度,线程和进程间的区别,    TCP3    次握手,    4    次挥手,面了差不多一个小时,答对和答错的问题一半一半,出来时感觉肯定要挂,结果竟然过了,当时还是有点小兴奋。第二天过去二面,二面的面试官年纪估计    40    左右吧,很严肃,全程无眼神交流。上来就问我    1-1000    中有多少个    7    ,当时很紧张啊,竟然忘记    700    中还有    100    个    7    ,结果答错了。然后问我学习成绩怎么样,本科是哪里,会不会操作系统,我的优缺点,有没了解过开源项目,一大堆问题问下来,心想跟阿里问的一样一样的,多半又挂了。最后面了半个小时就出来了,等了一天,状态就变成了不合适,腾讯实习的面试就这样结束了。        腾讯校招同样是后台开发的岗位,一面的面试官很帅啊,哈哈,人也超级好,问你问题如果不会,会一步一步引导你。自我介绍后,问了我平时喜欢怎么调试代码,我说我喜欢打印输出看结果,问我如何压缩字符串,我说可以用哈夫曼编码,面试官问还有没有其他方法,我想了下说可以把字符串计算成一个    int    型的整数。接着问我,有一个程序每次都是跑了    2    天之后就崩溃了,问我怎么样找出这个问题;这个涉及到内存泄漏,但是对内存泄漏如何高效的查找我并不是特别了解,于是说先从指针和动态内存入手,查找代码,看看有没野指针,有没内存没有释放。面试官说这个办法可以,还有没有更加高效的,我想了下说打印结果,其实并不是特别确定,就这个问题讨论了一会。最后我说我实在不知道还有什么方法,面试官就开始问下一个,问了    I/O    复用,问    select,epoll    的区别,问我会不会    HTTP    ,因为我不会,直接就说了不会。问了我    map    ,我说    map    是用红黑树实现,红黑树能实现查找,插入和删除都在    O(lgn)    的时间内。接着问了一道题,有    10000    个数据,如何找出最大的    10    个数。我想了下,就说可以用一个长度为    10    的数组先存放前    10    个数字,然后把这    10    个数字按升序排好序,接下来每一个数字和最大的比,面试官打断我说是和最大的比吗?不是应该和最小的比吗?我赶紧想了下,说,哦,是和最小的比,比最小的小就直接删除,如果比最小的大,就先删除最小的元素,然后用二分查找的方式将这个元素插入到正确的位置。面试官对我的回答还挺满意,接着问我,你这个算法的时间复杂度是多少,我说    O(n)    ,我当时的想法是    10    个数的二分查找是常数时间的,面试官说你再想想,我就说查找是常数时间啊,    n    个数就是    O(n)    啊,他说如果我不是    10    个数呢,假如是    m    个数?我马上反应过来了,说    O(n*mlgm),    我把二分查找的时间复杂度记错了,面试官说你确定?我又各种想,哦,不对,二分查找是    O(lgn),    应该是    O(nlgm)    ,面试官终于说是的了。不得不再次说面试官人还是非常不错的,会各种引导你。最后还问了一个题,说假如每天有    10    亿次的    QQ    登录记录,可是有的人登录了多次,实际只有    6    亿个不同的人登录了,问如何找出这    6    亿个    QQ    号?我马上想到用哈希,于是我说可以用哈希,一条一条的放,每次插入之前先查询是否存在,存在则直接进行下一个,如果不存在则插入到哈希表中。面试官接着问,你怎么设计这个哈希的键值呢?我当时就想到面试官问我的如何压缩字符串的问题,我说可以用    int     型的数据去表示,面试官说,那你给我算一下,这    6    亿个数据放进去会占用多少内存?我就开始计算,算完后告诉面试官,他想了下说,嗯,差不多。接着就是各种问,愿不愿意去深圳,能不能实习。最后没给我问他问题的时间,就直接说,好今天结束了,你等通知吧。大概一面出来    3    个小时左右吧,状态就变成了复试中。        二面的面试官人也不错,不是那种超级严肃的人。先是自我介绍,然后问了项目,问我的服务器为什么要那样去设计,然后根据我的项目问了很多问题。接着问如何查看    CPU    占用率,如何查看    TCP    连接的状态。同样问了    I/O    复用,问我    epoll    为什么高效?接着问我进程间通信有哪些方式?我就给他把所有的    IPC    说了一遍,然后各自的特点也说了。面试官表示很满意,说了一句,你还不错嘛。当时我就抓住机会,开始给面试官各种表忠心,说我很想进腾讯。面试官说,我招女生其实只需要她的技术达到男生的    2/3    就行了,只是你能接受加班吗?我说我可以。说让他把我招进去,总之就是各种表达我想进腾讯的愿望。面试官听我说完,说不行,我还是要再考考你。于是让我查找字符串的子串。让自己设计函数,我说我知道用    KMP    算法,不过我忘记怎么写的了,我可以说思路。面试官人很好,说没事,你是女生,不用写    KMP    ,你就写一般的就行。我赶紧写完,给面试官分析我的代码,面试官看完,说不错,思维还挺严谨。最后就说,那你回去等结果吧。我说好的,刚起身准备走,面试官竟然伸出手跟我握手,我赶紧给面试官握手,受宠若惊啊。出去之后,过了一会查状态就变成了    HR    面试中。        HR    面挺轻松的,就问了家庭状况,优缺点,聊聊天,对深圳怎么看,一共    20    分钟的样子。        3    面下来,拿到腾讯的    offer    ,真的很感谢能遇到这么好的面试官。                                 百度:            百度一面全部是问基础知识,感觉面试官列了一张表,里面列的就是他要考察的点。先是问    C/C++    ,问了我    为什么不把函数实现放在头文件里面?这个答的不是很好,给他随便扯了一点。接着问inline    函数为什么高效?我说因为inline    函数是直接插入代码,不需要参数压栈,参数返回等。面试官接着问,还有呢,我想了下,实在想不出别的,就说不会了。接着开始问网络,问我    OSI    的    7    层,让我画出来,接着问    TCP/IP    的模型,问    TCP    和    UDP    的区别,问    I/O    复用,问    epoll    为什么高效?这些我比较熟悉,所以答的比较好。问了加锁,问    IPC    。感觉这些问题很喜欢问。网络问完开始问操作系统,一共问了两个问题,    操作系统如何从死循环中夺回    CPU    的使用权,操作系统的时钟计时器的计时准不准确,如果不准确是什么原因?这两个问题,我感觉答的一般。接着问数据结构,问我    stack    有什么应用场景,当时***了,没想起来递归,给他扯了点别的。问我二叉平衡树有什么应用场景?我一想,这个不是很清楚啊,我就给他扯红黑树,我说红黑树是局部平衡的,它能保证查找,插入和删除都是在    O(lgn)    时间内,说    map    也是用红黑树实现的,    linux    内核里面也大量用到红黑树,然后这个问题就忽悠过去了。最后让写了两道代码,一个是    memcpy    ,一个是    10000    !末尾有多少个    0    ?第一个比较简单,第二个我没有写出来,在面试官的指引下,大致说了下思路。百度一面面完,感觉很不好啊,好几个问题答的不好,当时就觉得要挂了,结果第二天竟然接到    HR    的电话,让我去二面。        二面的面试官人还不错,一进去先给我一个中序遍历和一个后续遍历,让我画出二叉树的结构,写出前序遍历。这个很简单,很快写完,面试官就开始问问题,问我知道哪些常用的    linux    系统调用,我说有    open,write,read,fork,,,    答了一些,百度二面问的一些细节问题,记不太清了,写了一个代码,说    a,b    两个数,然后有    {-5,+5,-7,+7,-12,+12},    这些数字可以随意用多次,问    a    最少多少次能得到    b    ?当时我就想到用    bfs    ,因为    bfs    用来找最短路很高效,然后我给他写,写了之后开始给面试官讲,他问我怎么样保证,我说只要是有解,    bfs    肯定能找到,然后就给他举例,他说你好像对这个很熟悉啊,我就说我之前参加比赛的时候,这个算法是我们的核心算法。后面又问    n    条直线能把一个平面分成多少个区域,这个也不难,推导了一下公式。当时问了我会不会数据库,我说不会,后来问面试官问题的时候,我问他哪个部门,他说他是百度医生,做服务器,数据库开发等,我问他是不是做服务器对数据库要求很高,他说是的,当时就感觉不妙啊,我不会数据库啊,会不会直接就被刷了。于是赶紧想办法补救,我就接着问他百度招人是要招所有技术都很牛的人,还是更看重他的综合能力?接着面试官就开始各种说百度只招最优秀的人,又说学习能力强的人也很欢迎。我就说百度对新人有什么培训?他就给我讲了百度的培训机制,说百度学习机会很多,我马上接话说,感觉如果能进百度,肯定能学到很多东西,面试官点头说是的,感觉他表示很赞同啊。        三面时,刚开始进去,感觉面试官有点严肃,就跟我聊项目,问我的服务器为什么要这么设计,初衷是什么,为什么要用这种方法,有没有其他方法,我的方法有什么优点,总之就是聊项目,也问了我一个内存泄露的问题,感觉内存泄露很重要啊。百度和腾讯都问。聊完项目,面试官就问我想做什么方向,我说服务器开发,做后台,然后他又说服务器也很多方向,给我列举了一下,我就说按照我现在会的,可能更加适合高并发的服务器。面试官点了下头,又问我对地点有什么要求,我说我报的北京,因为北京是百度的技术中心。面试官就问我对上海怎么看,有没考虑过上海,我就说上海我没去过,不过不排斥。后来问面试官的时候,我就问了他是哪里,主要做什么?他说他在上海,做百度    PC    端的一些应用开发。最后又闲聊了一下,就完了。出门一看时间,才半个多小时,心里很虚啊,感觉时间很短。        大概过了一天还是两天,百度的    HR    给我打电话,问我愿不愿意调到上海的岗位,说    3    面面试官觉得我不错,让她跟我沟通一下地点,当时心里想是不是表示通过了,我说我同意去上海,就这样,拿到了百度的    offer    。                                 美团:            美团是一天三面全部面完,对于美团的面试,我表示很无语,太随意了。我是面后端开发,一面给我安排了一个搞机器学习的,结果面试环节中,面试官经常说你这个我不是很懂哈,我觉得是怎么怎么样,不知道对不对。我心里就想,你都不懂,我随便怎么说你也不知道。一面专业知识问的不多,写了一个代码,二叉树的非递归前序遍历。        二面的时候写了两个代码,一个是一个单链表,找出节点值的最大上升子序列,然后把这些节点删除。第二个不记得了,以后记起来了再补充,反正都不难。接着就是聊些基础问题,都没有太难的。        三面的面试官主要在聊项目,先讲思路,讲完后竟然问我代码是怎么写的,我心想还有这么变态的,问代码怎么写,我就给他大致写了下我的代码结构,具体实现没有写。其中穿插着问了些关于网络编程的问题,问我    accpet    的返回值。聊完项目,他就开始问我,你有没有想过做产品经理,这完全不沾边,竟然问我这个,我就说我不是很会,如果工作几年后,有机会我可以去尝试换方向。问完之后又问我,有没想过做测试,我当时心里就想,这是什么鬼,一下问我要不要做这个,一下要不要做那个,我也不知道他是挖坑给我跳,还是真的想问我愿不愿意做。我想了一下,就说如果是测试开发也可以考虑。        美团面完,感觉问的不算难,答的也还可以,然而并没有收到电话。                      个人心得:            总的来说我还是幸运的,    BAT    三家公司,校招的时候能去面两家,最后还拿到    offer    。要感恩的太多,先是感谢能遇到有缘分的面试官,是他们的赏识我才能通过一次一次的面试;还要感谢我的队友,大神一般的人物,先是让我喜欢上算法,并且耐心的给我讲解,后来做项目的时候,也是各种帮我;同时,感谢我们团队的小伙伴们,大家总是一起在进步。        作为一个女生,要想做一个好的程序员,要努力的还有太多,希望我能一直保持着对技术的一份热情,不断的进步。  
点赞 35
评论 0
全部评论

相关推荐

07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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