前几天收到美团和百度的意向书,算是对自己秋招的一个收尾了吧。总结一下这个秋招。 首先感谢牛客网,所有的offer都是通过牛客网上帖子内推获得的,也在这个平台上看了不少面经,刷了不少题,腾讯和好未来我已经拒掉了,剩下在百度和美团再这两家选,可参考我的前一个帖子,请大家给点建议。 PS:楼主是C++后台 阿里巴巴,蚂蚁金服(二面跪) 阿里巴巴跪了首先确实是因为自己能力不足,其次是因为自己作死投了JAVA岗(本人主要会C++)。 一面: 1.实习经历 2.说一下迪克斯特拉算法 3.LinkedList和ArrayList区别 4.B树B+树 5.一致性哈希 6.图的的环检测(深搜) 7.对称加密与非对称加密 8.还有些东西时间有些久远不记得了 二面: 1.写堆排序 2.二叉树先序遍历(用递归和非递归) 3.TCP三次握手,四次挥手 4.说自己的项目,怎么优化 结果GG 百度运维部(三面跪) 一面 1.TCP三次握手,以及为什么不是两次或四次 2.TCP四次挥手状态,为什么要有time_wait,以及如何避免 3.文件系统实现 5.proc文件系统(meminfo,cpuinfo) 6.Linux命令查看文件大小 7.布隆过滤算法 8.项目,如何改进 二面 1.全程谈实习 2.问了一个堆排序,然后堆得作用 3.Topk 4.将一个只含有1~n的乱序数组(不重复)的第一个数变成-1,求哪个数被变成了-1 问面试官我进去做的是运维还是开发,被他教育了一番,但他说还是给我过了 三面 1.输入baidu.com是怎么通信的 2.能不能来实习 3.。。。剩下的不记得了,被虐了 结果GG,被自己菜醒。。。 好未来(拒offer) 一面 1.二叉树高度(递归,非递归) 2.一个数组只有一个数不重复,找出这个数。 3.一个数组有两个不重复,找出这两个数 4.写一下堆排序 5.虚函数实现机制 6.一个硬币,有A,和B两人投币,A先投,正面A赢,反面B继续投,B投到正面算B赢否则A继续投,这个规则持续下去求A赢得概率(等比数列公式忘了*_*) 7.Java与C++区别 8.怎么学习的 二面 1.快排如何优化,快排与堆排优缺点 2.设计一个类,...忘记了 3.static作用 4.讲项目 5.愿不愿意转算法方向 结果offer 美团 餐饮(offer) 一面 1.meituan.com通信过程 2.TCP三次握手,四次挥手,状态 3.虚拟内存机制 4.缺页操作系统如何处理 5.什么是elf头文件 6.写快排,二分,单例 7.volatile作用,内存屏障 8.Java与C++区别(从模板,编译,链接,内存,库几个方向解释) 二面 1.给一个字符串数组和一个字符串S,找出字符串数组中所有的字符串s符合规则:s通过删除,增加,替换一个字符可以变为S。 2.简单讲讲操作系统内存管理机制,段式与页式内存管理的优缺点(顺道讲了下段页式) 3.知道sendfile吗(表示不知道),啥是NIO(小白表示没听过。。。) 4.RPC实现(答得很烂) 5.讲一下一个C文件的编译链接过程 6.B树B+树 7.讲实习,讲自己的项目 上来这个面试官就说前面的算法太简单,来个稍微难点的第一题,(也不算难吧*_*。。。 三面 1.45度斜线打印二维数组 2.讲一下网络通信协议栈 3.TCP和UDP区别,TCP如何保证可靠性,time_wait,TCP有哪些缺点 4.HTTPS如何实现 5.什么是缓存,为什么需要缓存,有哪些缓存使用场景 6.最近看了什么讲一下,讲了一下GFS的核心和mapreduc 4个瓶盖换1瓶酒,要喝150瓶酒,他自己最少买多少瓶? 8.聊了下人生 结果 offer 腾讯 SNG QQ音乐(拒offer) 一面 1.vector与list区别 2.什么是traits,作用 3.迭代器失效 4.unorderd_map如何实现 5.模板两种特化,作用(要求根据STL讲,再配合traits说了下) 6.说一下yacc和lex,递归下降 7.tcp/ip...(这个答得都快吐了,参考前面 8.深拷贝浅拷贝,右值引用,智能指针,引用计数,循环引用如何解决 二面 1.两个排序数组合并成一个排序数组 2.游戏(农药)用的TCP还是UDP为什么 3.Epoll与Select区别以及epoll优点,为什么一般情况下epoll性能比select好,ET模式与LT模式 4.Epoll ET下非阻塞读,为什么不能是阻塞 5.发送3个80字节包,TCP与UDP下对端分别接受几次(其实就是TCP与UDP区别之一,TCP基于流) 6.实习,项目 三面 1.如何判断一个数是2的次幂 2.快排 3.还有些不记得了,回答的不是很好 4.谈谈理想啥的 百度云计算事业部(offer) 一面 1.给一个先序序列,重构完全二叉树,如果是一般二叉树能不能重构,为什么(QQ写代码_) 2.有三个消息队列,随机的向三个队列插入元素(概率可能不同),如何保证插入和查找的高效(有两种思路,一种是加一个控制器,队列通知占用率,由控制器控制插入和查找,另一种是计算阻塞次数,再根据阻塞次数按比例控制该队列的插入频率和查找频率) 3.最长公共子序列 4.vector的拷贝,swap函数交换指针 5.线程与进程区别,优缺点,进程内存模型 6.IPC有哪些,共享内存原理 7.说一下LRU cache思路 8.赛马问题,36匹马,6个赛道,找出最快6匹马的最小赛马次数,如果是n匹马,m个赛道呢 二面 1.虚函数实现机制 2.内存模型影响因素(内存对齐,多重继承下的内存模型,菱形问题,虚拟继承内存模型,虚拟继承是如何处理的) 3.NRVO优化,右值引用 4.extern C作用,为什么需要 5.C++重载,name manging机制 6.Epoll与Select区别以及epoll优点,为什么一般情况下epoll性能比select好,ET模式与LT模式 7..如何用epoll实现高并发,多线程,线程池,线程惊群问题 8.二叉树先序遍历,递归,非递归,如何用O(1)空间实现(morris 遍历) 9.互斥锁的实现原理(屏蔽中断,CAS),读写锁实现 三面 1.实习,项目 2.TCP拥塞控制,滑动窗口协议,糊涂窗口 3.虚拟内存机制,二级页表,TLB快表,缺页,swap 4.操作系统调度算法 5.TCP如何保证可靠性,四种定时器,time_wait如何解决,Nagle算法 6.一致性算法(raft),一致性哈希 7.优点缺点,是否愿意来实习 结果offer 总结 作为一个学校不太好,非科班的同学,跟大神收们比还是有些差距的(**比如内核及TDF大佬 @赛罗·奥特曼)。楼主拿到成都美团的offer和百度的offer后就没有参加别的校招了,其他笔试也没去做了(**) ,上面就是我的全部面经。下面说一下我的学习经验,再分享些学习资源,有需要的可以自取 总结一下经验,有些常见的问题(比如线程进程区别,extern C,虚函数,IPC)可以深入去回答,面试官考这些问题其实是想了解学习的深度如何,这个就跟平时的积累有关。有些问题提前准备,不要临时去发挥,比如:自我介绍,offer意向,优缺点等的问题,个人项目和实习经历一定要提前复习,反复去演练,看看有哪些可以提升的地方。算法题要多练(leetcode,剑指offer),特别是剑指offer。面经可以多看,毕竟很多问题提前准备大有益处,也可以查漏补缺,还有一点,能走内推尽量内推,可以免去不少精力。 分享一些学习资料 这个是侯捷的C++教程视频,非常非常好的教学视频涵盖了内存管理,STL(从源码层面分析),C++11这些内容,面试关于内存管理,STL的内容,学会了视频里的可以说是秒杀这些问题,这里我骗下赞,求大家赏个脸,点个赞,涨涨经验(*_*) 链接: https://pan.baidu.com/s/1qXQynz2 密码: fus4 还有一些书籍推荐给大家,其实都是些常见的书,需要的看看就行: C++ : 《C++primer》这不用说了吧,用了都说好。 《STL源码剖析》模板,traits,数据结构。。这个对我面试加成挺大的,看了几遍后,仿了个小STL 《深度探索C 对象模型》虚表,多继承,虚继承,NRVO。。。。 《Effective C++》学些C++技巧 还有些比较杂的就不推荐了 算法与数据结构: 我看的是《算法》,红皮书,跟着coursera mooc(Algorithms I,II)走一遍,做做课后lab,功力大升 《算法导论》,没看完,查漏补缺用,补充上面书没提到的动态规划,B树等知识 剩下就是刷leetcode oj,楼主刷的不多就把前150道搞定了,听说某大佬大二刷了300多道,惭愧。。 网络: 先看《计算机网络自顶向下方法》,再看《TCP/IP详解》 操作系统: 必须推荐一下神书《深入理解计算机系统》,内功大法好,面试吹逼必备 然后看《现代操作系统》,主要看进程,线程,内存管理,文件系统 实践的书推荐一下《操作系统真象还原》,实现一个小内核,挺好玩的,记得 @赛罗·奥特曼 大佬也推荐过。看之前回顾一下CSAPP的汇编那章。 Linux stevens那几本圣经书,不在多说。。。 设计模式 简单易懂《head first 设计模式》,看了之后了解下设计模式,但我觉得这东西还是要落实到工程上,否则就是空谈。。。 其他的就是编译原理啥的,有兴趣的可以看看。。。《编程语言实现模式》这书挺有意思的,教你写parser啥的。然后是《编译原理及实践》,讲解基本原理LR,递归下降,DFA,NFA,程序编译过程的原理都涵盖了,但不深入。。。再深点就是大名鼎鼎的龙书《编译原理》,这个在看了前面两本书的基础下看就没啥压力。。看完这些书写点Parser,Lexer还是挺有意思的。。有兴趣玩玩再代码生成,优化等等,楼主才疏学浅玩不动,只看了点编译后端的原理。。。 关于分布式的学习大家也可以向我推荐一下方法,还是有些simple and naive的,一直都在学习理论,缺少实践,,准备学下Redis(*_*),再看点源码 2017.09.18更新 关于简历: 简历的书写着重突出重点,个人信息,实习经历,项目(两三个),然后介绍下技能点,我是这样的排版。一般简历一页就足够了。推荐一个神器Typora,可以用markdown写简历,这个软件可以转md格式为pdf,而且有不同的markdown风格,当然用LaTeX写最好了。 另外,推荐一下印度人的一个网站Geeksforgeeks,这个网站有很多算法和数据结构的讲解实例,虽然是英文的但挺好理解的,还有很多外企的面经。
|