给处于迷茫瓶颈期的“码农”分享的大厂面试经验
一、前言
写这篇有以下几个原因:
- 对过去一年找工作的一个详细总结
- 自己找工作也看了许多攻略,没有一个特别有用,特别好的,所以就自己写一个攻略,如果能帮助到别人,当然最好了。
- 好吧,总有读者来问,额。就写一份得了。
-
个人的一些想法,如有意见和错误,欢迎指出和讨论。
二、内容提纲
- 个人经历介绍以及一些找工作误区
- 如何写好简历,做到最完美的简历
- 如何准备知识,做好规划
- 如何笔试
- 如何面试
- 公司介绍
本文注重方法,不会具体说具体的题目,因为每个面试官问的不会一样,没有太多的意义,而且方法掌握对了,知识都是通的,具体实践自己怎么操作都可以。
三、个人经历
- 阿里蚂蚁金服:3月初第一个面的公司,3面过了。暑期实习3月
- 网易游戏互娱:3月面,1面,通过发了offer,没去实习
- 百度:9月校招,笔试+3面面试,最后拿到special offer
- 腾讯:9月校招,笔试+2面面试+hr面,special offer
- 华为:9月校招,3面+2面,special offer
- 今日头条:笔试+3面,拿到offer
- 微软:4月面,3面,通过,算法偏弱,最后没给offer
- 猿题库:9月,3面过,算法偏弱,最后没给offer
四、误区
以为看越多面试题越好
许多同学看许多别人的面试题,看面试是什么题目,然而真正面试发现并没有什么用,本人第一次面试前看过1,2篇面试题经验,之后就再也没看过。因为面试可以说是一种谈判和博弈,每个面试官,问到的题目肯定不一样,许多都是顺着话题而展开,而且技术发展这么快,去年的面经的题目可能就过时了,算法题目除外。如果花过多时间和经历去看面试题,那么就跑偏了。
盲目的投各种公司
许多同学投各种公司,然后忙的焦头烂额,发现最后收获的很少,又很沮丧,很累。其实选公司也是有许多策略的,不易贪多,注重质量,而且第一次面试的公司一定要慎重选择,如果第一次面试成功,那么有保底的,又能增加信心,在以后的面时间过程中肯定也会越来越好。如果第一次面试失败,那么会很打击,很沮丧,会怀疑自己,缺乏自信,那么之后别的公司的面试也会越来越紧张,没有自信。所以第一次面试的公司要选好,争取一下成功。
各种跑招聘会
额,本人找工作没有去一次招聘会,个人觉得没有特别大的作用,如果想了解,想搜集信息,网络完全可以搜集的很全面,而且跑很多招聘会,看那么多的同学,人容易焦虑,缺乏精力,又疲惫,又累,所以直接网上投就好了。
五、准备和规划
规划:学习知识-> 简历->内推->笔试->面试 。
1. 怎么学?
- 看书,看书,看书,记录,记录,记录
- 总结和思考
- 巩固和举一反三
看书是最好的学习方式,书具有系统性,会涉及到各个细节,多看书能很好的打好基础,增加广度,其次是记录,记录重要的知识点,关键的知识点,容易忽视的知识点,重点理解和思考,增加深度。然后不断巩固,加深记忆。
2. 我在找工作之前看了这些书?
- Java 方向:
《Java编程思想》,《Java核心I/II》,《 Java虚拟机》,《Java特种兵》,《Java 数据结构与算法》,《Head First Java》,《Java特种兵》,《Effective In Java》,《Java并发编程艺术》,《Java面试指南》
- Android 方向:
《第一行代码》,《Android群英传》,《Android权威指南》,《Android开发艺术》,《Android深入理解内核思想》,《Android系统源码分析》
这些书全部都买了,当然是二手的,一本一二十。
3. 这么多书,怎么看呢?
精读一本,例如Java,看《Java编程思想》,认真看完,做好笔记记录,自己不理解的,容易忘记的,觉得重要的记下来,当然是记关键词,使自己之后能看到关键词想到相关知识点,之后不断巩固。
然后你看别的书,就发现,都是熟悉的,因为许多都是重叠的,那么就查缺补漏,做记录,之后看的就非常快。
4. 获取信息
每天抽取一定的时间,获取招聘信息,然后根据时间记录,其他时间打基础。
六、做简历
1. 要认识清楚自己
- 简历不是说把自己所有的有的无的都放上去
- 简历针对不同公司,不同职位,要做相关更改,最好不要一份简历通用
- 把简历当作一个入口,和面试官沟通的入口,每个点相当于开始,针对每个点,都做好接下来的对话。
2. 亮点和优势?
好的简历无外乎以下几点:
- 学校奖学金(XXX奖学金)代表你的学习基础
- 技能,简单列一下几点比如 Java:熟悉 Java (多线程,IO, 虚拟机)了解常用 jar 包源码,了解 Java 设计思想等
- 项目:xxx项目,自己做了哪些工作
- 竞赛:xxx竞赛xxx几等奖
- 论文和专利:xxx论文
3. 简历格式
- 用表格来规范简历的格式
- 字体要清晰,统一,看起来舒服,如微软雅黑
- 不要超过一面
- 清晰简洁,每个模块加粗,下一横线
- 中英文简历都要做,英文注意单词用法
- 提交得提交pdf格式,内推是发现许多同学交到是word版本,word版本因为兼容性问题,布局会变的。
- 尽量填充一面,内容多的,缩小字体,缩小行距,内容少的,增大字体,增大行距,一页满,不留空白
4. 个人信息
- 标题不要写简历2个字,都知道写简历没必要多此一举,直接写自己名字
- 手机,邮箱,性别,出生年月,技术博客,github。技术博客和github很重要,是加分点,许多面试官会看,这个是最直接能了解一个人的技术基础,如果没有,那么ok去准备,去总结,去写,去填充这些。
5. 校园经历
如果只是本科,直接写到个人信息里面,如果硕士,可以写两行,也可以加上自己获得的奖,xxx奖学金啥的,动态的调整内容
6.技能
切记不要写精通
-
列清点: 如果直接写熟悉java语言,那么很宽泛,面试官可以在这么大的范围里面随便问,问到很偏的东西,就完蛋,比如java8新特性,java多线程,java泛型。 如果改为熟悉Java语言(基础,容器,多线程,IO,面向对象)这样就很好,相当于把一个很大的集合,缩小为可控的集合,那么只要认真准备擅长的,重点的几点,再兼顾其他的知识点就ok。其他也是一样 熟悉机器学习(列自己擅长的算法)熟悉数据结构(...)
-
这样写法一个可以丰富自己的简历,使每一行都占满,另一个缩小集合,限制在自己擅长,拿手的重要知识点上面,这样自己准备起来有方向,当然其他的知识点也要准备。
-
Java 可以如下写: 熟悉 Java 语言(...) 熟悉 Java 虚拟机(...)了解 JDK 源码(arrayList,HashMap...) 熟悉Java并发(...) arrayList,HashMap的源码非常重要,必掌握知识点,而去写到简历上,很大可能会被问,一旦问道,自己顺手纸上写出来,多么完美。
-
数据结构(...)操作系统(...) 网络(...) 数据库(...) 如果没有精力准备,那么不写,问到能回答则回答,不回答,就说不会。
-
语言:CET-4:xx CET-6:xx 能熟练阅读官方文档。
7. 项目
-
有项目最好,项目上标清和xxx公司,和xxx国外老师,和xxx创业团队合作项目,这样看上去就显的项目重要,有底气,比上面都没有,让人以为自己捣鼓的小项目好很多。
-
没有项目,那么自己要准备一个项目,途径:教学视频,带你手打项目,语速2倍,了解项目整个逻辑,属于拿来主义,站在巨人的肩膀上,加上自己的思考,改进,进行包装,这样也可以,但是自己要圆过去,重要的不是项目本身,是项目中,自己做了什么,涉及到什么知识点
-
项目写清自己做的工作,关键知识点:xxxx
8. 自我评价
- 不要写什么踏实,努力,这些很虚的东西。
- 有爱好,特长可以写 如xxx几级, 志愿者,社团工作,可以写,xxx主席
- 有优势的写:如3年读了100本专业书,写了多少篇博客
- 职业规划:职业发展
9. 注意
-
简历是一个引子,上面的每一点,每一句话都是有用的,如果问到那么必须自己能对话下去
-
为什么技能,列点,这些就属于自己抛出去引导面试官问的,这样就会化被动为主动
-
比如列了熟悉arrayList,HashMap源码,这样就抛出去这样一个问题给面试官问,而且属于数据结构知识,又有语言实习,极大可能面试官看到简历这点就会让你写,你在写这点在简历上的时候,就肯定准备的很周全,那么面试的时候,顺利的写下来,这样就很好。技能,项目都是如此,抛出去相关点,准备周全,等着来问。 自我评价也是,抛出去读了多少书,那么问到你最印象深刻的书是什么,准备好,顺利答出,这样就会掌握面试的节奏,化被动为主动
-
简历的每一点都要认真准备,写的准备好,虚的,不会的那么就不写。因为自己真的遇到面试官,就拿着简历,对着上面一点一点的问,然后扩展。
七、笔试
一般最开始都可以走内推流程,不过现在大部分内推也是要笔试的了,笔试有以下类型:
-
在线编程:网易微软的hihoCoder,没有acm基础的很难通过,这个时候就是发挥人脉的时候到了,当然自己要努力经常刷leetcode,等在线编程题目
-
选择,编程,简答之类的:涉及的知识面真的很广,大家都懂得。不明说了
八、面试
第一家面试的公司最重要,慎重选择自己把握大的,可以不上来直接BAT,可以面一些小公司,使自己适应,增加自己的信心,如果一上来BAT,那么可能直接撞死,信心将受到强烈打击。本人一上来就是B,幸好还是通过了。
把握时间节点,在自己把简历准备好,知识点准备好,怎么抛,怎么把我节奏准备好后,再投简历,切记没准备好,盲目的投。
约好时间,许多面试可能在你做别的事情,比如搬砖,比如吃饭,比如睡午觉的时候打电话过来面试,这个时候正确的姿势是:不好意思,然后约半小时后。然后在这半小时中:1.找一个安静的空间,2.看笔记关键词过一下知识点,清空大脑,平静心情。 刚开始可以这样,如果有把握,那么随时开始。本人刚开始几次都是突然打电话,然后都是约了靠后的半小时到一小时,平静好心情,清空好大脑。后面面试多了,就随时可以开始面了。
面试有这几个阶段:自我介绍阶段,基础知识,扩展知识,项目,提问
1. 自我介绍阶段
简历上有的就不需要说了,说以下几点:
- 简单介绍项目,重点突出一个,看面试官是不是感兴趣,动态调整
- 已经有的职业技能规划
- 未来的发展规划
- 自己的看法,为什么投这个公司,自己对这个公司的业务,和公司这个职位的工作情况,工作环境,使用的技术。
- 中间可以加入一些问句:比如说完自己的未来发展规划,问公司的对信任的职业规划什么样,或者问面试官个人,这样使对话能继续下去,有的说,有点聊,双方都舒服。
2. 基础知识
因为简历上已经抛出引子了,自己也准备好了,那么简单的基础知识很容易就能答上来,会的就说会,不会就说不会
3. 扩展知识
如设计题目,考思维,ok首先归类到哪方面的问题,然后搜查知识点,看有没有类似的知识点,涉及到。因为这样的题目,大多都是从基础知识扩展出来的,所以从对应的基础知识搜查。
4. 应用知识
最新的技术,开源项目,xx语言新特性。这些需要自己平时积累的
5. 项目
知识点介绍项目,说清楚项目的应用场景
以上知识和项目这些完全没有技巧可言,全部都是靠自己的功力,当然抛出去的引子使知识点范围可控了
6. 提问
- 问具体公司文化
- 问使用什么开源技术
- 问个人发展规划
- 问公司培养新人计划
- 问面试官面试反馈: 最后问,如果前面谈的好的话,这个时候就知道自己是不是面过了。
7. 优缺点
经常遇到,这是一个很难回答的题目,重点是,缺点不能是真正的缺点,如果说缺点是不喜欢加班,ok,完蛋。本人经历后总结出以下几点:
- 实践能力不足,解决问题能力有待提高,随着自己的实践和努力,怎么怎么样
- 职场专业性不足,学校学生的思维更多, 然后自己会尽快转变从学校到职场多过度
- 心理抗压能力不足。
- 任务时间规划和细分。
8. 几家大厂的面试流程
-
阿里:电面,内推没有笔试,网站上有进度,面试完成后,面试状态会变动如果挂的话,没挂的话过几天就下一面,最后有一个hr面,只要价值观没问题,基本没事。然后优缺点问题回答好,参考上面。基础知识,根据个人抛什么样的引子,java的话常规的题目如:抽象,多态,虚拟机双亲模型,gc,内存结构,多线程,线程池,自动装箱,io, 等。结合数据结构问的重点是容器,抛了引子,会写源码,ok了。然后并发库,equal方法源码等。之后排序,各种应用场景排序,大规模排序,分桶。偏项目,每一面都会问项目,二面,三面扩展知识比较多,涉及多线程比较多,虚拟机比较多,或者源码。阿里的氛围是狼性文化,适合张扬的性格,公司争吵比较多,当然是对事不对人。弹性上班,下班部门不同,时间不一样。基本9点后把。
-
百度:现场面,3面,在宾馆,问的题目难度比阿里难,有算法题,手写代码,问题偏低层居多,本人android, 问了很多底层的原理,AIDL, Binder,AMS, 启动流程, view绘制, 消息队列,Binder open(), map(), JNI,当然这些自己在简历上也抛了引子。 前两面一天面,之后过的话会有3面会涉及一些hr面的问题, 很少, 项目比前二面问的多, 有设计题目。 3面后无hr面
-
腾讯:宾馆,2面,hr面, 100000人里选1000 貌似是这样。 扩展连续深入问题居多, 比百度好一些,不是特别篇底层,有手写算法题目。腾讯文化柔和。
-
微软:3面,手写算法题目, 看编程之美,程序员代码面试指南, 准备充分就OK了
-
猿题库:3面,手写算法:2面远程,在线编程,1面线程,链表,数组居多,不涉及树图。
-
今日头条:3面,2,3题算法题,基础知识, 随着面试进度,越来越偏底层。
九、总结
-
充分的准备 数据结构, 在线编程刷题,看书基础知识, 实践项目, 兼顾计算机基础知识,自己的知识积累最重要,其他面经,题库,也只是景上添花。
-
心态调整好,第一公司选择最重要,成功则一路信心倍增
-
每次面完做总结,思考,学习,提高
-
关注新技术,关注开源项目
-
多花功夫,只有比别人更努力才行
-
祝找工作的新的一年顺利找到自己满意的工作。
读者福利
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:863545238
点击链接加入群聊【Java架构攻城攻略】:https://jq.qq.com/?_wv=1027&k=5P0NYCP
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!