谨以此文纪念2019年春招
前言
整个三四月,一直在背知识点,感觉好多内容没有复习到位。
每天刷着leetcode和ZOJ,逛着牛客网看又有哪家开始面试,每天的心情就像一个“W”。
看过别人发的腾讯大厦,幻想过腾讯大厦向外看的感觉。
大一暑假去过阿里杭州园区,担忧自己有没有机会再去。
真的没想到迷茫中的自己等来了腾讯,又迎来了阿里。
开发新产品的意义就在于能够让人们更好的科技的时代中生活,我依然有无数的知识需要学习,希望此文能够给困惑中的同学们一点点帮助,摆脱焦虑。
终有一天,梦想实现,想起阿里园区中的一句话,“谢谢那个曾经努力的自己”。
也希望未来的自己也能够和优秀的同学一起成长。
简历情况
- 本科大三,5%。
- 计算机视觉深度学习项目2个(一大一小),大项目论文投了《计算机应用》(已录用)。
- 浙江省“新苗”科技创新项目立项。
- ACMer,看过STL和JVM,熟悉数据结构,实现能力中上。
- 技术栈:C++/Java/Python比较均衡,了解Linux和docker,设计模式。
- 生活中:计算机社团社长,大学生暑期社会实践团队负责人。
- 看的书:机器学习基础+花书+西瓜书,leetcode,JVM虚拟机,effective C++
- 贡献量:Github: https://github.com/lizhimins CSDN: https://blog.csdn.net/Terrances
offer情况
- 已获:美团(4面),默安(3面),涂鸦(3面),腾讯(5面),阿里(5面)
- 希望:华为(简历池),微软(1面)
- 放弃:京东(笔试时间不合适),有赞(主要是有offer了…)
- 已挂:字节跳动(1面)
投递情况
已投递
- 小米,3月13日投递,上海,软件开发工程师-Java方向,还在简历池里面,估计校招时间没到。
- 美团,3月2日投递,北京,后端开发,3月13日技术一面,3月16日技术二面,3月18日offer。
- 阿里巴巴,3月13日投递,杭州总部,Java后端开发,3月15日内推到新零售事业部,Java研发。3月28日晚5点准备去吃饭,收到面试邀约,天气暴雨,随便找了个教室面试,然后过了一面等二面中…
- 字节跳动,3月13日投递,上海,后端开发,3月16日春招在线编程4题全对。3月23日技术一面,技术方向和面试官不符合,这是我最生气的一次面试,莫名其妙被对面挂了,也是暂时唯一面试挂的。
- 默安科技,3月14日投递,杭州,C++开发,3月15日晚连续一面,二面技术面,秒杀了几个算法题后技术面过,3月16日HR中午面试给了offer call,这也是我收到的第一个offer,非常感谢默安,蹭一下云舒大大的欧气,说五月给正式offer并且加了微信好友。
- 腾讯,3月15日投递,深圳总部,后端开发,找了工程师内推到CSIG云与事业产业群,然后被微信捞起,简历面+三次面试,3月30日HR面,已offer call。
- 京东,3月16日投递,北京,未收到第一批未笔试,Java开发岗。4月笔试时间不合适放弃了。
- 拼多多,3月17日投递,上海,基础平台研发工程师。QQ登录的,简历填写较为简单。
- 涂鸦智能,3月17日投递,杭州,后端开发工程师。主要做5G+物联网+机器学习的。一面算法秒杀,二面问了多线程,二面是leader级别的,答的还可以,说给offer是C++音视频方向,主要做视频会议这类的,还没有HR给正式offer call,但是留了联系方式和微信。
- 华为云计算,3月17日投递,北京,云计算产品工程师-IT产品线。估计是我渣渣本科不能过关,简历池了,笔试机会都木给我,果然菜是原罪。
投递失败或未投
- 深信服,3月17日投递,广州,说暂拒2020实习生,让我四月再投。
- 网易,杭州总部,后端开发,未投简历。准备找人内推。
- 搜狗,3月21日开始投递,岗位只有北京。未投简历。
- 滴滴新锐。3月22日感觉有点困难,未投简历。这个没找到链接。
- 携程。3月23日看了下只有广州的,暂时没有投递。
- **百度和度小满(百度金融)**3月25日投递,邮件内推,暂时没有收到面试。
- 有赞,3月27日,杭州,后端开发,电商。因为已经投了涂鸦和阿里,就拒了。
- 中国移动。觉得没有杭州的岗位就没有投递。
- IBM,投递链接
面试情况
美团
美团一面 (43分钟)
第一次面试很紧张,没有录音
- 自我介绍+项目。
- 线程的实现,同步,优化
- 线程同步,线程私有变量。
- 自旋锁,锁膨胀。
- mysql索引怎么实现。最左前缀。成为PK的条件
- Time-wait和Close-wait出现在什么时候?
- 怎么实现反射。
- java序列化,netty
美团二面 (21分钟)
- Spring Dao用哪种设计模式用得最多?
- hibernate注解和XML。
- 装饰器模式。抽象工厂模式。
- AQS的源码和ReentrantLock的源码
- Spring AOP了解过吗。
- Spring管理的bean的对象存储在哪里。类的元信息比如常量表,字面量,静态字段在方法区(Method Area里),关于对象的数据在jvm堆里。
- HashMap原理,hash冲突解决,然后又扯到红黑树。
美团三面 (45分钟)
- 没有自我介绍,强怼项目。
- 线程池,线程池里面的线程的状态有哪些。
- 给链接手撸hash拉链。这个花了25分钟左右调到没BUG了。
- 发展规划。
- 想问的。
分布式锁:多台机器部署的应用对一个共享数据做同步,问如何解决。
美团HR面
- 忘记录音。
默安科技
默安科技一面
- 自我介绍+项目。
- 二叉树前序遍历。
- 深入了解项目。
- 线程进程区别,线程状态。
- 做了几个题,具体有些忘记了。
- 怎么看端口占用状态。答lsof -i, netstat。
- Linux常见命令。ls,mv,cp,source,cron等等。
默安科技二面
- 链表找中间节点。快慢指针
- 讲讲快排。口述伪代码。
- TCP/UDP区别,用途,优势。
- socket编程一般顺序。
- 二叉树层次遍历,口述伪代码。
- Java基础,封装,多态。
- 默安科技主要还是C++主导,Java岗位也有。
默安科技HR
- 问了下基本情况就给了offer,五月正式offer
- 默安在我比较绝望的时候给了我很大的信心,谢谢默安科技。
腾讯(WXG微信支付)
投的是CSIG云产业群,意外的被WXG微信组捞起,感谢机缘巧合吧。
腾讯简历面(编程 + 33分35秒)
- 记事本里手写OOP实现一个签到的程序。
- 从一堆数字中O(n)找不重复的数字。
- 字符串处理,魔改KMP。
- 数学智力题,64匹马取前8,问最快要几次。11次。
- 简历面,问项目做了什么,主要的技术栈。
腾讯一面(41分38秒)
- 深入问了我项目。
- 线程池,连接池,各自优点。
- Java常见设计模式。
- 讲讲builder建造者模式。这个答的不太好。
- TCP/UDP区别,什么时候该用什么。
- UDP实现TCP。
- 设计一个APP,TCP/UDP具体运用。
- 数据库索引,数据库引擎。
- 学习方向,我说C++/Java/Python比较均衡。
- 监督学习,无监督学习。
- 科技创新立项都做了什么。
- 没给我机会问问题,大概还是我太菜了。
腾讯二面(视频面试,75分钟,主要是写代码)
- ACM复杂规则模拟。这里可以用Java责任链模式,但当时问的时候我没有答出来,看过忘记了。
- Java GC。开始背诵balabala。
- 双亲委派机制。
- 产生死锁的四个必要条件:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 - 独占锁,共享锁和更新锁。
- 还有什么想问的。问了下技术氛围和学习情况。
- XSS注入攻击了解不。答不会。
- SSH登录,我说了半天,对面说这个方法叫什么。想了一下,非对称加密。
- 实现一个人脸识别软件要多少工时?
- 说实话,这一面面的我快自闭了,有些看过就忘了。
腾讯三面(微信语音的)
- 进程调度,进程状态切换。
- 怎么用Java/C++实现线程池,具体的做法。
- Spring框架,ORM框架Hibernate讲讲。
- IOC, AOP,IOC(控制反转)和DI(依赖注入)有什么不同,Java反射机制。
- 适配器模式(Adapter pattern),桥接模式(Bridge pattern),组合模式(composite pattern)
- 主要问我想做的技术方向。
- 介绍腾讯的部门和人员划分等。
- HDFS, Paxos选举协议,zookeeper和redis一点点。
- 口头offer
腾讯HR面(小哥哥)
- 自我介绍,社会活动介绍。答了计算机社团,暑期社会实践。
- 选了简历上一个项目,项目中你的贡献。
- 你对腾讯的认识。
- 你为什么要投这个岗位,还投了其他公司吗?提了阿里,涂鸦,美团。
- 那ali和tx你选那个。腾讯呀,机会更多balabala。。。
- 父母亲人有从事相关计算机岗位吗。
- 父母对你成长的影响,对你岗位的选择怎么看。
- 平时都学什么东西,没课的时候干啥。
- 你觉得你有什么优点,缺点。
- 你提到了老师,请问你觉得老师最好的品质是什么?示以美好,授以希望。
- 还有什么想问的。问了下部门人员结构和转正率。
彩蛋
- 小伙伴A,HR面,我觉得WX是最好的产品。对面:我不是WX的。舔错了(?)
- 小伙伴B,一面说,我不会C++。面试官:晓得了,一面过了。
二面,面试官:听一面说你的C++特别好。然后。。。
字节跳动(今日头条)
- 手写归并排序。
- Git版本控制。按项目怎么用答了一下,分支冲突解决。
- Python装饰器。答当时我用来写单元测试的,久远,忘记了
- 讲讲docker。答隔离机制,挂载点,线程,还扯了内核调度,估计不是想要的答案。
- docker内网IP段是什么。
- 数据库索引机制。
答B+树,hash,各个优势balabala,然后说不太对?
答聚簇索引,非聚簇索引balabala,还不太对?没懂这个题问什么。 - 数据库B+树。能答的都答的差不多了。
- 乐观锁悲观锁,CAS, ABA问题。
- 还想问的?您是做什么的,GoLang开发。
总结一下问题:Git,docker,Python,Golang。
没问任何C++/Java。也没有问数据结构,计算机网络。
今日头条后端开发一面凉,心态爆炸。
涂鸦智能
涂鸦一面
- 自我介绍。
- 主要问了下项目。
涂鸦二面
- 线程进程区别,线程状态。
- Linux权限755是什么。
- select pool epoll,文件描述符FD。
- 设计一个多用户APP,你会怎么分配,安排,和腾讯的问题比较类似。
- 还有一些碎的问题。
- 这一面和负责人聊得非常开心。如果没有AT,我估计会选择涂鸦。
涂鸦HR面
- 实习生打的电话,告知收到腾讯offer,不互相浪费时间。
微软
- 待补充
阿里巴巴(新零售)
阿里一面(38分50秒)
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 看你提到了连接池,druid连接池。
- 常见排序算法。快排,二路归并,冒泡,插入,锦标赛排序。topK问题。
- TCP三次握手,四次挥手。
- 数据库引擎对比,索引。Innodb,Myisam和Memory对比了下,B+树,hash,between操作,left join操作。
- 看你搞ACM,你给我讲个简单的数据结构,答了并查集和线段树。
- 怎么保证多线程操作的原子性。原子类,锁,volitile部分操作。
- 深入问了乐观锁,悲观锁及其实现。我提了CAS, ABA但是不问我hhh。
- Python机器学习基础。
- 怎么解决依赖问题。
- zookeeper锁,数据库隔离级别。
- docker隔离部署问题。
- taobao查询排序要考虑那些因素?这个问题贼困难了,能说的东西很多,估计是看了我简历上机器学习,答了过往消费记录,搜索记录,协同过滤,聚类。
- 有什么要补充的呢,要考虑商家那边的情况,balabala。
- 还有什么想问的。
总结:问的问题很碎但是很全面,很容易看出一个人的基础掌握程度。
阿里二面(45分39秒)
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 项目中你相比于别人的优势在哪里,就是你用了别人没有的东西。
- 你觉得你的能力大概在什么方面。ACM能力。当时以为要我敲代码了。一边说话一边开机。
- 你是如何进行学习的?
- 画一个软件的执行流程,UML, ER。
- 有没有写过开发文档。
- Java怎么加载类,加载验证准备解析初始化使用卸载,双亲委派机制。bootstrap class loader,extend class loader具体。
- linux常用命令。iftop,netstat,htop,apt,yum,source,corn,docker等等。
- 讲讲docker。
- MVC,MVVM对比。
- Spring的IOC, AOP。
- ORM框架Hibernate讲讲。
- 设计模式了解吗?
- 还有什么想问的。
总结:这一面中规中矩,没有问很难的问题,只要确实尝试过简历上所说的内容,应该都可以答出来。
阿里三面(leader面 18分59秒 + 24分53秒)
- 提前一天预约
- 告诉我今天面试40分钟左右,包括自我介绍,技术知识,项目经验。
- 自我介绍。奖学金,ACM,深度学习,传统项目开发,负载均衡优化等。
- 你维护的CSDN和Github主要内容,刷ACM题情况。
- 你的哪块基础知识比较好一点?每块都很平均吧。。。
- TCP如何在不可靠网络传输上实现可靠传输?超时重传,滑动窗口。TCP状态。
- TCP超时时间,RTT怎么计算。
- 4G切换Wifi时候TCP怎么实现流量变化?分组丢失,快重传,快恢复等。路由器交换机排队。
- 常见的TCP优化算法。TCP拥塞算法,答了谷歌BBR和锐速的原理以及简单实现。
- 操作系统linux内核对TCP优化的办法,HTTP1.0,1.1,2.0每个版本做的更新。状态100,host字段,谷歌浏览器6个TCP连接等,支持长连接。
- HTTP中cookie和session的区别。客户端服务端,表示用户的方法,禁用cookie时候怎么办。
- 在上一条的基础上拓展答了Redis.
- session存的数据结构,对于单个用户set,多个用户hashmap。
- hashmap的原理,key-value计算,冲突解决的三个方式。和二分时间复杂度对比。rehash造成环。
- hashtable线程安全嘛,讲讲线程安全具体实现。
- conCurrentHashmap和Hashmap性能上除了分段锁还有什么别的优化。我只回答了段内扩容。
- 高并发场景下hashmap使用,CAS,ABA问题。
- 并行和并发的概念和区别。时间片,上下文切换。
- 数据库范式,NoSQL了解过吗?
- UML图,ER图,流程图。
- 数据库的索引,最左前缀,abc三个主键。
- 跨表查询常见优化思路。
- 电话中断…吐槽阿里园区的电话质量,每一面都有问题。
- 打通之后简单聊了一下,有没有别的公司offer,说有美团,腾讯offer,挑战微软。
总结:此人说话很有条理性,一听就是大佬,全程在敲面试记录,综合体验还是很不错的。
阿里四面(交叉面 天猫超市)
- 自我介绍,介绍完了又让我确认了一遍 专业,学历,电话确认。(?)
- 讲讲你的ACM经历。
- 你有考虑过考研嘛?可以在企业中学到更多吧。开始迷了一会儿,听不清对面说什么。
- 对比一下考研和工作。
- 怎么平衡工作和休闲的时间。
- 你在深度学习项目里面做了什么。看过花书,西瓜书,机器学习导论。
- 这个项目可以用到哪些方面,夜间摄像头,老照片修复等等。
- 你了解Java开发框架嘛?SSH,SSM。扩展了dubbo,durid,rocketMQ,Netty。这个问题我答的太多了,磨蹭了蛮久。
- 讲讲rocketMQ,优先级队列,Filter,Persistence,Reliablity。
- 消息的一致性怎么做。保证幂等性。
- 回溯消费。回溯消费是指Consumer已经消费成功的消息,由于业务上需求需要重新消费。
- wait(), sleep()区别。yield方法。
- lock和synchronized对比。
- 可重入锁,偏向锁,锁粗化。
- volitile保证内存的可见性,禁止指令重排,cache。
- volitile保证原子性?我说可以,后来我查了下是部分可以。。。完全答错。
由于volatile保证了可见性,那么在每个线程中对inc自增完之后,在其他线程中都能看到修改后的值,所以有10个线程分别进行了1000次操作,那么最终inc的值应该是1000*10=10000。这里面就有一个误区了,volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。 - 内存屏障。直接说不知道,大神我真的不懂啊。。。
内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。Java编译器也会根据内存屏障的规则禁止重排序。
内存屏障可以被分为以下几种类型
1. LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。
2. StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。
3. LoadStore屏障:对于这样的语句Load1; LoadStore; Store2,在Store2及后续写入操作被刷出前,保证Load1要读取的数据被读取完毕。
4. StoreLoad屏障:对于这样的语句Store1; StoreLoad; Load2,在Load2及后续所有读取操作执行前,保证Store1的写入对所有处理器可见。它的开销是四种屏障中最大的。
5. 在大多数处理器的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能。有的处理器的重排序规则较严,无需内存屏障也能很好的工作,Java编译器会在这种情况下不放置内存屏障。
- 解释一下copyOnWrite,讲了一下Mac OS里面对文件写时复制技术。
- 叫车时候,怎么给周围车辆排序?你能拿到哪些数据,常见路线,加权堆排序或者其他机器学习方法。怀疑是滴滴的大佬?
- 堆排序比其他排序好在那里?(时间)稳定性?快排什么时候O(nlgn)退化O(n^2),堆一直O(nlgn)。后来大佬说他没有说时间,说的是排序稳定性。那么堆不是稳定的,都怪电话听不清,这锅我不背啊。
- 海量数据找TopN。锦标赛排序,败者树。大根堆,小根堆。
- 完全二叉树,满二叉树。红黑树的几个性质。
- 红黑树旋转次数。我拓展了伸展树,二三四树,B+树的具体实现相同不同点。
- hashmap什么时候用红黑树。冲突量>8, <6的时候退化为链表。为什么要这么做。性能比较。
- 觉得前面16-18答的不好,我说我的代码实现能力还可以(疯狂暗示coding手速能不能加点分)。
- 你还有什么想问的。不同部门情况。
- offer情况,所以你会去腾讯?考虑地域问题,家人问题也可能选阿里。
- 您是哪个部门的?天猫超市。其他问题。
总结:问题都很不错,很全面也很深入。奈何本人太菜,答错了几个点。
阿里HR面
- 自我介绍开局缓解尴尬。
- ACM,学习的内容,论文情况。
- 学习方法,实践方法。
- 初高中算法竞赛和大学竞赛有什么不同。
- 你怎么自学法。
- 怎么平衡工作和学习。
- 花书,机器学习导论主要讲了哪些内容?讲的比较浅层,但是HR反问了一个点。(HR也懂技术,大雾)
- 你带领的计算机社团在大学期间的贡献。
- 社会实践方面“十佳团队”,整个活动内容,流程讲讲。
- 其他常规问题。
- 想问的,部门人员情况。
小吐槽
面试官都很友好,但是后面几面电话通话质量太差了,每一面都有听不清的情况,面其他公司没有这个问题。
笔试情况
字节跳动(开发岗笔试,3月16日,C++,4AC)
- 贪心 没什么好说的,200->17,这里要1024减一下
- 扫描,从前向后不断更新,匹配规则以后去掉字母就可以,中间有点写丑了,15-20分钟
- 模拟+贪心,首先把1号复制一下做一个开环,然后从左到右从右到左贪心最小更新即可,不读错题应该10分钟内
- 典型的二分答案,读完题应该就知道了,项目做多了二分都写炸了。。。eps精度不够会导致只能90%
京东(开发岗,4月13日,没参加但是后来看了题)
- DFS或者并查集
- 先观察到m很小(10),然后直接想KMP,找一波把符合条件的区间用struct记录下来,然后区间贪心,参考借教室问题。想法肯定对了,实现上受时间限制可能码不完。
致谢
在3月中的几天,每天都担心被捞起,接不到面试电话怎么办?没谈好挂了怎么办?为什么自己还在简历池?
为什么别人不如我都能上岸。其实还是因为自己不够强,想明白了又滚去学习了。
加入了夸夸群,相互鼓励,让我有信心继续等下去,也没荒废手上的阅读。
致谢:(排名不分先后hhh…)
- 样样,在牛客有ID(今天yy收到offer了),腾讯offer。
- 沙沙,研究生,爱奇艺大佬。
- 嘻,海外研究生,夸夸群群主。
- Roni,某省ACM大佬,最佳女队,ACM奖无数。
- Draymonder,矿大本科生,刷题经历丰富,善于总结。
- David,小项,Py和Go大神。
- 人类的文明,群里学历最高的,南大博士高材生
- adsb,面阿里专有云的大佬。
- 刘TN,阿里云OSS在岗工程师。
- ",腾讯CSIG在岗工程师,腾讯内推人。
- 努力和大佬做同事,北京研究生。
- 以南,和我同龄,海外研究生,可我本科她却研一?
- 儒雅随和臭弟弟,种灵芝的大佬。
- Psyduck,地理跨考计算机,数据岗。
- 卑微的自走棋骑士dota中军0offer,数学系,研一,好像华为offer。
- 晓航,一起面ali的朋友。
- Mosquito,四川ACM大佬,对算法和数据结构非常熟,面Java研发。
- Zero,上海交大研究生。
- 凌云。博士大佬+1。
- 摸鱼小新。研究生。
- 卑微小李,浙江大学大佬。
- 娜娜,初中认识的外校同学。
- 小吴**,学长,期间和他交流比较多。
- 陆YH,同学,一起做项目,一起打ACM。
- 蔡CH,学弟,比较正能量。
尾语
做一个善良的人,为群众谋幸福。
本文同步地址:
https://github.com/lizhimins/dailylife/blob/master/job.md