2018 秋招找工作总结
序
经历了大大小小的二三十轮笔试面试,秋招终于快结束了。 先总结下目前已经稳了的公司:
- 知乎,北京,知乎市场,Java后端
- 百度,北京,互联网数据研发部,C++研发
- 今日头条,北京,Data-数据平台,后端研发
- 美丽联合(蘑菇街),杭州,基础平台部,Java研发
- 阿里巴巴,杭州,天猫事业部,Java研发
着手准备秋招,7月初找学长内推阿里打响秋招第一枪,经历过等待面试结果的煎熬,经历过第一轮面试就被拒的伤心,经历过什么书都看不进去的迷茫,也经历过突然收到聘用意向书一晚上没睡着的激动,每天刷十几遍邮箱,紧紧盯着手机怕就漏接一个面试电话。。。
通过了9月3号的头条的三面后就决定不再投新的公司,总体下来还算比较顺利,感觉没必要继续刷offer了,后面就基本不再准备秋招的事了。
感谢爸妈,感谢学长学姐,感谢互相支持的朋友,感谢牛客网的牛哥牛妹。虽然距离能进微软谷歌的大神还差得远,还是想稍微总结下这段经历。
自我介绍
先简单介绍下自己的情况,山东科技大学计算机学院软件工程专业2014级学生,非211,非大神,参加了两年半ACM集训,虽然拿到过省一国二但是其实还是挺水。
做过比较大的项目就是去年做的集训队管理系统ACManager了,其实就是一个SSH的Web项目,已经投入使用一年多了。
大三下学期拿到了百度的实习offer,负责网页页面分析和分类的相关工作,主语言是C++。
因为一直准备也一直想从事Java相关的工作,对Web和架构比较感兴趣,所以秋招找工作一直是投递的Java后端研发相关的职位。后面的一些经验也主要是按照Java岗来总结的。
笔试总结
和往年不同,现在多数互联网公司的笔试基本都安排在了线上,像是阿里有自己的笔试平台,其他公司也基本都是用的牛客网、赛码网之类平台进行笔试。
笔试一般有选择题(单选+多选)、智商题、问答题、设计题、编程题等几种题型。
不要以为面Java笔试就只有Java的题,一般C、C++、Java、SQL、Shell甚至PHP、JavaScript都会有,但不会特别难,考察的都是语言的基本语法。另外还会出现操作系统、计算机网络、设计模式、数据库系统、算法、数据结构、排列组合等等相关的题目。
问答题和设计题一般是让你设计一个系统,比如设计URL长转短网站,或设计一个秒杀网站等,需要考虑功能、并发、分布式、缓存、存储、网络、一致性等等方面。平时如果看一些大型网站架构相关的书问题应该不大。
编程题一般有2-3道题,不同公司的题目难度不一,做过全是水题排序一下就AC的,也有刚发表的那种论文题。笔试里的编程题相比ACM比较好的一点是可以重复提交,以最后一次提交得分为准,是否AC会直接显示。编程题对于练过ACM的同学还是比较吃香的,一般都是在比赛中见惯了的题目类型,比如暴力、贪心、动态规划。可以看一下我之前写的网易内推校招编程题题解:
笔试这一块想准备的话,可以刷《技术之曈》和《剑指offer》,另外可以做牛客网的大厂编程题,多多益善。
准备面试
春招的时候只面过百度、阿里巴巴,还有一家创业公司HyperReal,因为当时只有阿里投递的是Java岗,所以各种经验也是从阿里那次面试起步的。印象中那次一面面试官技术非常牛,好像什么也会,把项目里用到的所有技术都问一通,一个技术点如果回答上来了还会死死地深入的问原理,直到回答不上来。二面的时候由于某些原因刚刚通宵了一夜,上午9点接到电话后基本处于蒙逼状态,面试官说了5遍问题都没听懂,然后就挂了...当然主观原因还是自己太水了,缺乏对项目的高层次理解。
所以秋招在准备的时候,也稍微涨了一些经验,在准备面试知识点的深度和广度方面,还有和面试官的沟通方面,有了更好地把握。整理了不少关于校招常考知识点的博客,同时对简历中写“擅长”(不敢写精通)的两三个部分,进行深入的研究和理解。
- JVM虚拟机学习总结
- Spring/SpringMVC框架 原理学习总结
- Java BIO/NIO/AIO学习总结
- JDK设计模式学习总结
- Java 7/8/9 新特性
- 数据库&MySQL 学习总结
- TCP/IP/HTTP/Web 学习总结
- 分布式/大型网站架构 理论学习总结
- 操作系统/Linux 学习总结
- Hibernate 学习总结
- Redis 基础知识学习总结
- Netty 基础学习总结
- Maven 学习总结
另外想说的就是,机会往往会留给有准备的人。我在美团一面的时候被问到了LRU的概念和实现的问题,然后当晚就总结了一篇博客,并且更深入地研究了如何自己代码实现一个LRU缓存。结果在后面头条二面的时候就被问到了,让写代码实现LRU缓存,然后就清晰地讲出了原理写出了代码。
所以还是建议在看书看博客学习的同时,尽量每天抽时间去刷同公司同职位别人被问的面试题,整理出自己不会的,然后分类集中精力去攻克。
需要关注的技术方向(偏向于JavaWeb后端)
- 计算机网络、操作系统、设计模式、数据库系统(这四门课建议看博客复习总结常考点,时间充分或者学的确实很差可以系统看书)
- 数据结构、算法(没有ACM基础的推荐《算法·第四版》+《剑指offer》,刷题建议LeetCode)
- Java语法基础(还是建议看博客查缺补漏,有时间可以看《Thinking in Java》,集合类要重点掌握会原理)
- NIO/并发(属于Java语言的高阶部分,建议找相关书籍相关章节看,推荐《实战Java高并发程序设计》)
- JVM(C++岗问操作系统多,Java岗就得重点看JVM了,推荐《深入理解Java虚拟机》)
- Web(Servlet+JSP+SpringBoot+Spring+SpringMVC+Hibernate/MyBatis,都得会用,源码挑感兴趣的看,推荐《Servlet JSP和Spring MVC初学指南》,《Spring实战》,《深入分析JavaWeb技术内幕》,《Spring源码深度解析》)
- SQL/NoSQL(我关注的是MySQL和Redis,推荐《MySQL背后的数据结构及算法原理》,《MySQL技术内幕:InnoDB存储引擎》,《Redis设计与实现》)
- Linux/Shell/Python/Git(可以系统学学,面试偶尔会问到,工作中也会常用)
- 其他Java框架(例如Netty/Mina、Lucene/ElasticSearch、Maven/Gradle、Guava、Quartz,建议挑1-2个会用+懂原理)
- 大型网站架构(推荐看《大型网站技术架构》,《大型网站系统与Java中间件实践》)
- 其他(Docker,Nginx/LVS,Hadoop/Spark/Storm,Kotlin/Scala/Clojure,Redis/Memcached/MongoDB,Zookeeper,Dubbo/SpringCloud,MQ,Android,Angular/React/Vue 等等都是加分项,根据兴趣多做些研究,关注前沿技术)
面试过程
阿里巴巴 天猫技术部 Java研发
一面
- 自我介绍
- ACM经历、印象最深的题目、ACM过程中的挫折
- ACManager项目成员、如何提高某页面的响应速度、网站数据的来源、爬虫脏读问题
- 讲一下实习所做的工作,工作中用了什么算法,用的什么语言
- Java相对于C++的优点
- Spring @Autowired和@Resource的区别
- 讲一下JVM的新生代和老年代
- 讲一下数据库查询慢的优化方法
- Java序列化的作用,应用场景
- 讲一下HashMap在多线程环境下使用可能的后果、有啥替代方案
- 是否关注新技术、HTTPS相对HTTP有啥好处
- 未来几年的职业规划
二面
- 在百度做了什么工作,是怎么做的,用了什么算法,怎么check效果?
- 用Java做过什么项目,项目用了Java中的哪些框架?
- 为什么要用Spring?
- 为什么要用SpringMVC,如果没有这玩意,你自己咋实现?
- 有啥想问我的
三面
- 在哪里实习的?介绍下在百度做的项目
- 团队人数?项目背景?团队目标?个人目标?
- 项目里的策略具体是怎么实现的?策略是自己开发的么?团队内会互相学习策略么?
- 测试数据集有多大?关键词表有多大?
- 在百度印象最深的一件事?
- 公司和个人用什么语言?喜欢研究哪一块?
- 平时都是怎么提升个人能力的?比如并发分布式这一块?
- 如何保证你学到的高并发技术,不是demo层面,而是真正能在高并发环境行得通?
- 如何实现10w并发的注册服务,或者说如何实现流量暴增时候,我只需要往集群里加机器就可以?(答了一些负载均衡、消息队列、缓存、反向代理、CDN,面试官说你的回答和我问的问题不是同一个抽象层次,这些只是技术实现的一种方式而已 = = 囧,感觉应该回答架构上的思路吧 = =)
四面(交叉面)
- 自我介绍
- 在百度做的工作和具体细节,策略实现方式
- ACM练了多久?简单介绍下山东省赛的情况
- 刷过多少题?ACM过程中最难忘的一道题
- Linux的内存管理方面有了解吗?(不了解)那你了解操作系统啥?
- 讲一下死锁的产生条件和避免吧
- 讲一下银行家算法是如何避免死锁的
- Linux的IO讲一下?(类型、IO效率、链接数、支持IO大小)
- 求最短路的算法中了解哪些?具体讲下dijkstra算法吧
- 讲下JVM中的内存模型吧
- 有什么想问我的
五面(HR面)
- 意向工作和打算?
- 你说有比赛top3,简单介绍下情况
- 大学学的专业?算法方面的课程情况
- 介绍下软件杯这个项目?前后端意向?
- 介绍下在百度做的工作,项目背景,你的角色
- 百度工作和个人技术兴趣是否契合?
- 对工作环境、地点、方向有什么要求?
- 有什么想问我的?(问了两个问题,信号太差面试官都听错了 = =)
整理来讲,感觉阿里5面基础知识方面考察的不是特别深,没有阿里实习面试那么***钻,都是面试常考题。但是项目、思路、思维广度方面问的比较深,有些防不胜防。
腾讯 大连分公司(QQ音乐) 研发工程师
一面
- 自我介绍
- 百度网讯和百度的区别?
- vector、list、map、set区别,底层实现机制,复杂度
- 虚函数了解么?
- 对哪些方面比较擅长?
- 平时工作用Linux么?
- 线程和进程的区别?
- 如何停止掉一个进程(不管是里面的还是外面的)?
- 僵尸进程是如何产生的?
- MySQL了解么?精通么?
- TCP了解么?
- TIME_WAIT这个状态是怎么产生的?
- 实习多久了?
- 实习单位给转正么?
面试问了一堆C++和操作系统方面的东西,然而C++好久没看了,操作系统答得也不是很好,然后就挂了。电话打来是大连的号,后来问庄神说这个可能是腾讯的外包公司,也就没再放在心上。
蘑菇街 基础平台部 Java研发
一面
- 自我介绍
- 用Java实现ipv4识别(正则 手写 细节)
- 含有重复数字的有序数组,如何判断某个数出现次数?
- 硬币兑换问题(贪心 动态规划 区别 证明)
- ACM比赛中最擅长的题目类型?
- 如何手写解析Sql where语句(词法分析 语法分析 编译优化)
- 手写一个客户端,实现url计数器功能,具备输入存储等功能,考虑系统怎么实现,需要注意的点(系统设计 并发 IO优化 消息队列)
- 简历中吹的大学10w代码量怎么来的?写一个代码行统计工具需要考哪些?
- 在百度的主要工作,项目中的策略具体怎么实现?
- 有什么想要问我的
二面
- 自我介绍
- 在学校里有哪些专业课?哪些课学的比较好?学的比较好的原因是什么?
- Java整个体技术系你都会哪些方面?(语言、虚拟机、框架)
- 现在用的JDK几,JDK8有啥改进?
- JDK8在JVM方面和语言方面各有啥改进?
- 说一下JDK7的内存管理吧
- 有没有遇到虚拟机调优相关的问题,怎么解决的?
- 并发相关的库有了解吗?讲一下项目中用到的并发的场景
- 了解过无锁吗?无锁优缺点?场景?
- 项目的爬虫、计算、排行整个是怎么架构的?
- 前后端传输巨型对象有啥好办法?(回答的分页、异步、zip压缩、业务分离)
- 希望从事哪些方面的工作?
- 有对分布式,rpc,中间件相关框架和原理的了解吗?
- 如果能通过面试,可以过来实习吗?你对实习有啥看法?时间?
- 有啥想问我的?
三面(HR面)
- 对前面面试官有啥评价?
- 项目和ACM自己的角色?作为管理者觉得有什么能改进?
- 在百度做了什么?收获最大的是什么?
- 平时怎么和同事交流?哪些方面?如何做跨部门的交流?
- 在百度参加过团建吗?
- 老师、同学、上级是怎么评价你的?
- 觉得自己有什么缺点可以改进?
- 最近除了工作还在忙什么?减肥从多少斤到了多少斤?学英语的动机?
- 怎么看待杭州?来过杭州吗?来干嘛了?北京杭州优缺点?
- 百度给offer吗?还有其他offer吗?在面试其他公司吗?
- 期待薪资?最后如何选择offer?
- 家里是怎么看待蘑菇街这份工作的?
- 有女朋友吗?(...)
- 有什么要问我的?
四面(CTO视频面)
- 自我介绍
- 在百度做的工作内容
- 意向城市、技术方向
- 有没有面杭州其他公司?阿里投递状态?
- 印象最深刻的bug?
- 有没有什么想问我的?
360 天眼 Java研发
一面(现场面)
- 在百度做了什么?具体细节
- 手写DFS(也没说具体背景,就让写个DFS,懵逼...)
- 做过啥Java项目
- Spring知道啥
- 高并发知道啥
- JVM知道啥
- 用过什么数据库,MySQL知道啥,详细说说索引
- Python写过啥,具体细节(黑了一波py,面试官可能不太爽)
- win和linux换行符分别是啥(答反了)
- 讲讲层次聚类算法
- SHA1和MD5区别,MD5被破解了咋办?(加盐/二次MD5)
- 大数据了解吗?
- ElasticSearch了解吗?(帅神用过的框架,没看过)
整个面试下来明显感觉到面试官不会Java.....然后好像对python和大数据异常感兴趣,然后想着这面试官也太神奇了.......然后微信刷了下二维码,就挂了,然后就进了360人才库....可能还是太水了。
美团点评 技术工程及基础数据平台 Java研发
一面
- 自我介绍
- 个人未来工作意向,技术方向
- 线程和进程区别?协程了解过吗?
- 了解LRU算法吗?应用?
- 了解过哪些速度快的排序算法?堆排序用什么数据结构实现?是否稳定?为什么?
- ConcurrentHashMap如何实现?
- HashMap扩容的相关细节与实现
- HashMap中可以放null吗?如何实现?
- 如何统计系统中某个端口的链接数?netstat能看哪些信息?
- CLOSE_WAIT这个状态持续很长时间正常吗?
- 动态代理了解吗?如何实现?应用场景?
- 个人还对哪些技术比较了解?
- 说一下JVM中常见的性能调优工具
- 可以来北京现场面试吗?面试通过后可以先过来实习吗?
- 有什么想问我的?
一面结束后说让等二面,结果约二面的时候刚好在南京参加软件杯决赛,约了两次时间都不合适。后来美团的学长找到我说内推面试流程这周就结束了,相当于挂了,感觉还是略可惜。
知乎 Java后端
一面
- 自我介绍
- 百度做的工作内容,场景,量
- 进程和线程的区别,为什么线程比进程快
- 对虚拟内存的了解,有什么优点?
- LinuxIO复用的模式了解哪些?epoll和select的内部实现
- 线程的实现方式有哪些
- 线程池应用场景,相对线程的好处
- JVM了解哪些?JVM堆为什么要分区?
- 场景题:知乎要有300w用户,1000个广告,在一个广告位上显示广告,要求每个用户7天内不能看同一个广告超过三次,如何设计?
- 有什么想问我的
二面
- 什么时候毕业?
- 在百度做的工作?用了什么算法?细节
- 讲一下ACManager这个项目
- 并发编程在项目中是怎么应用的?如果想继续优化你的爬虫还有什么思路?
- 层次聚类算法用在了哪里?为什么不用别的聚类算法?
- 感兴趣的技术方向,未来3-5年的职业规划?
- 是否计划留在百度?
- 最近在看什么书?(七周七并发)讲一下看过的内容
- 有什么想问我的?
今日头条
一面
- 自我介绍
- 介绍下在百度的工作和ACManager这个项目
- 百度工作有什么难点,怎么解决的
- ACManager用了什么牛逼的技术
- 并发编程是怎么使用的,效果怎么样?
- 进程和线程的区别,进程和线程通信方式有什么不同?
- 设计模式了解哪些?组合模式有什么好处?手写一个单例模式
- 手写算法:实现一个树形结构(嵌套数组)的Iterator(next, hasNext, 非递归)
- 说一下操作系统中换页相关的内容(不会 = =)
- 有什么想问我的?
二面
- 场景题:自己实现一个分布式的长短URL转换(短网址)网站,需要考虑:并发,业务,算法,分布式,缓存,存储,一致性,容灾,性能
- 设计题:现在有互斥锁mutex一把,请实现读写锁(思路+实现,不会)
- 算法题:手动实现一个LRU的缓存(思路、数据结构、算法、手写get和set方法)
- 有什么想问我的
三面
- 自我介绍
- 说下在百度所做的工作
- 说下ACManager这个系统
- 个人对业务还是架构感兴趣?
- 对nginx,LVS了解吗,是否读过源码,架构,负载均衡机制?
- IO方面有哪些了解?你觉得怎么达到最高性能?了解哪些框架?讲下Netty的架构
- 写过socket吗?代码层面如何关闭一个TCP连接?socket机制和源码看过吗?
- 设计一个系统,360开机击败百分之多少这样的服务端,考虑性能、QPS、传输、缓存、算法等
- 有什么想问我的?
头条的面试还是挺给力的,几乎是远程面试速度最快的了,不用焦急等面试结果,基本一上午三面下来就完事了,每轮完事HR和微信都会通知面试结果。
总结
一个公式
牛逼offer = 牛逼学校 + 牛逼实习 + 牛逼项目 + 牛逼奖项。 这是之前看群里的学长总结的,我觉得还得加两点,认真学习基础知识 + 运(人)气(品)。
新的起点
之前看学长的一篇工作经验的文章,评论区里有句话:
你们应届生呢?就是喜欢拿到阿里百度的offer以后要写一篇文章写一下心得,貌似完成了一件人生大事。去了就知道了,一样屌丝一个啊。别看着账面上十几二十万的年薪,干了一年能存几个钱还是未知数。对不起,给你们泼冷水了。
我觉得这句话说的挺有道理的,这只是一个新的起点。今天很残酷,未来更残酷;学校很残酷,社会更残酷。希望也相信自己未来会更加努力。