剖析今日头条技术面试过程以及应该如何准备?
作者:“想去大厂的小菜鸡”
https://juejin.im/post/5c14e7f051882562502f077
国庆期间公司的项目很闲,很多人觉得没意思陆续走了,我也考虑到自己的发展,从9月底开始面,面到11月底,三十家公司。我从不打没准备的仗,我是一个喜欢总结经验的人,每经过一场面试,我都会那个本子记录下来,或者哪些问题是自己之前没遇到过的,或者是哪些问题是新遇到。通过一段时间的备战,面试,拿了几家offer ,最终我入职了头条。
准备内容
算法
leetcode
http://leetcode.com/
careerup
http://www.careercup.com/
http://hawstein.com/posts/ctci-solutions-contents.html
glassdoor
http://www.glassdoor.com/index.htm
topcoder
http://www.topcoder.com/
zoj
http://acm.zju.edu.cn/onlinejudge/
july的博客
http://blog.csdn.net/v_july_v/article/details/6543438
mitbbs
http://www.mitbbs.com/bbsdoc/JobHunting.html
poj
http://poj.org/
杭电acm
http://acm.hdu.edu.cn/
codeforces
http://codeforces.com/
复杂数据结构的讲解及实现GeeksForGeeks:
http://www.geeksforgeeks.org/一个比较牛逼的coding challenge网站:
https://www.hackerrank.com/
Java基础
面向对象的特征:继承、封装和多态
int 和 Integer 有什么区别;Integer的值缓存范围
说说反射的用途及实现
Http 请求的 GET 和 POST 方式的区别
MVC设计思想
什么是Java序列化和反序列化;如何实现Java序列化;或者请描述
Serializable接口的作用
重载和重写的区别
进程和线程
线程和进程的概念
并行和并发的概念
创建线程的方式及实现
进程间通信的方式
说说 CountDownLatch、CyclicBarrier 原理和区别
说说 Semaphore 原理
说说 Exchanger 原理
ThreadLocal 原理分析;ThreadLocal为什么会出现OOM,出现的深
层次原理
讲讲线程池的实现原理
线程池的几种实现方式
线程的生命周期;状态是如何转移的
锁机制
什么是线程安全?如何保证线程安全?
重入锁的概念;重入锁为什么可以防止死锁?
产生死锁的四个条件
如何检查死锁
volatile 实现原理
synchronized 实现原理(对象监视器)
synchronized 与 lock 的区别
AQS 同步队列
CAS 无锁的概念;乐观锁和悲观锁
常见的原子操作类
什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的
乐观锁的业务场景及实现方式
Java 8 并发包下常见的并发类
偏向锁、轻量级锁、重量级锁、自旋锁的概念
数据库
DDL、DML、DCL 分别指什么
explain 命令
脏读、幻读、不可重复读
事务的隔离级别
数据库的几大范式
说说分库与分表设计
分库与分表带来的分布式困境与对应之策
说说 SQL 优化之道
存储引擎的 InnoDB 与 MyISAM 区别、优缺点、使用场景
索引类别(B+树索引、全文索引、哈希索引);索引的区别
什么是自适应哈希索引(AHI)
为什么要用 B+tree 作为 MySql 索引的数据结构
聚集索引与非聚集索引的区别
limit 20000 加载很慢怎么解决
常见的几种分布式 ID 的设计方案
JVM
JVM 运行时内存区域划分
常见的 GC 回收算法及其含义
常见的 JVM 性能监控和故障处理工具类
JVM 性能调优
类加载器、双亲委派模型
类加载的过程
强引用、软引用、弱引用、虚引用
Java 内存模型 JMM
在对上面的内容做了准备后,开始面试,先从小公司开始面,小公司1-2面技术,大公司3-5轮技术,一般都是一面基础,二面进阶,三面优化和场景,四面问规划,五面hr.
面试自我介绍
被人没太多的优点,双非本科,只不过大学学的数学专业。英语水平一般。
优势:
1 大学拿过奥数三等奖,ACM 大赛二等奖,当你的优秀大学生。
2 良好的沟通交流能力
3.较强的学习能力和逻辑思维能力
简历写上,自我评价潜力好!此处有装逼的嫌疑。
劣势:
1.16年毕业,经验不多,非常尴尬,上不上,下不下的情况。
2.毕业于双非本科,只要是本科就基本没问题,但有的公司要985.211的,并且还要30岁以内的。
3.前一家公司是传统行业,加入项目组时,项目稳定,每天就是有bug就修复,优化一下,其他时间就是学习的,聊骚各干各的,工作2年多跟在养老一样,每天都是 用一句话说就是编程5分钟,扯淡2小时,项目经验严重不足,很怕开发过很难的需求。
这一点是最伤的,很多公司看项目经历,结果你告诉面试官我写的需求都是垃圾。
学习方式
我自己情况,项目和学历肯定无法加分的。我自己对此也有清晰的认识,因此我在平时抓紧空闲时间学习和复习技术点。
1.看面试题
正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐 。
2.对问题深入理解
在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例如最常问的HashMap内部实现原理,这就促使你得开始去看jdk的源码或者是学习一些新的东西。看源码是很重要的一步,起步很难,但是会让你收益良多。
3.熟悉项目的代码和需求
把项目中不错的需求拿出来,看会,代码熟悉好,将整个功能的流程和涉及的东西吃透。项目是面试中必问的环节,一般是以一个功能点为基础展开问,因此你必须对这个功能有很深的认识,不能有模糊的地方。如果有时间,能把涉及到的知识点也搞懂最好。
4.网上做题和刷题
头条会远程面试, 一般会做题。建议去本文开头的一些刷题网站多做些题目。
5.总结记录
把自己每天学到的内容记录下来,可以让自己更有动力的复习,技术是一个枯燥的过程,你必须让自己时刻保持有动力。
投简历、约面试环节
1.投简历渠道
BOSS直聘、猎聘网。拉钩等(一般不靠谱),找靠谱猎头也行。
2.简历不要海投
为两个情况。
1)没有社招面试经验:建议采取海投的方式,只要职位要求跟自己比较匹配都可以投,累计面试经验。
2)社招面试经验已经足够:投那些职位匹配、公司满意的职位。公司评价可以去看准网,企业查等。
3.投简历没下文
简历确实亮点不多,学历不好,项目不行,容易被HR给刷掉,因此他们看得最直接的就是你上家的公司和你毕业的学校,如果你不是从牛逼的公司/学校出来,可能会碰到和我一样的情况,应对的办法就是多投。
4.一天约几家面试合适?
最理想的情况为2家面试,上午一般在10点左右,下午一般在2点左右。建议把理想的公司放下午,因为下午的时间比较充足,可以让公司更充分的了解你。我开始面的时候,每次都是上午面的不好,下午面的不错。
5.是否该裸辞?
我一开始是边上班边投,然后利用调休时间,或者请假去面试。后来,面试机会越来越多,请假太频繁了,自己都不好意思了,并且自己也已经有足够的信心,这个时候我选择了裸辞。
裸辞还有一个原因是,在面试过程中你会发现,遇到公司要人紧急的,如果你的入职流程过长可能错过这个公司。
6.注意事项
1)千万别迟到。
2)做好特殊情况处理,带简历、充电宝、纸巾、伞。
面试
1笔试常见的问题
面试常见的问题上面给的面试题链接基本都有。
1 手写代码:手写代码一般考单例、排序、线程、消费者生产者 排序。
2 写SQL很常考察group by、内连接和外连接
2.面试1-5面总结
1)让你自我介绍
2)做两道算法题(刷题必中)
3)问Java基础知识
4)java 高级进阶就是我准备的那些
4)问项目中指责和做了什么
5)业务情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。
6)对职业的规划
7)你有什么想问面试官
的
8)问期望待遇
3.常问的知识要点
1)集合相关问题(必问):
2)线程相关问题(必问):
3)JVM相关问题(必问):
4)设计模式相关问题(必问):
5)数据库相关问题,针对Mysql(必问):
6)主流框架相关问题:
Spring的设计模式。
Spring中AOP。
Spring注入bean的方式。
什么是IOC,什么是依赖注入。
Spring是单例还是多例,怎么修改。
Spring事务隔离级别和传播性。
介绍下Mybatis/Hibernate的缓存机制。
Mybatis的mapper文件中#和$的区别。
Mybatis的mapper文件中resultType和resultMap的区别。
Hibernate和Mybatis的区别。
Spring MVC和Struts2的区别。
Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的,其内部是怎么实现的。
7)其他遇到问题:
介绍下B树、二叉树。
IO和NIO的区别。
重载和重写的区别。
栈和队列。
接口和抽象类的区别。
int和Integer的自动拆箱/装箱相关问题。常量池相关问题。
==和equals的区别。
String和StringBuilder、StringBuffer的区别。
静态变量、实例变量、局部变量线程安全吗,为什么。
try、catch、finally都有return语句时执行哪个。
分布式锁的实现。
分布式session存储解决方案。
常用的linux命令。
offer 流程
面试通过当然还有一些后续的环节
1)提交工资流水(大点的公司),学历,学位照片。
2)定薪
3)体检通知
4)背调 发offer。
5)入职材料 选择入职日期。
一些经验
0 .千万别裸辞,别裸辞,别裸辞 我同事裸辞了,2个月了到现在还没找到工作。
1.先投一些普通的小公司,等面出感觉了再去面大公司。
2.自己不会的技术简历不要写
3.很多公司压待遇,期望待遇适当提高。
4.不要去实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去。
5.不要去参加很多大大小小的招聘会,纯粹是浪费时间。
6.把面试当作一次技术的交流,不要太在意是否能被录取。就当学习。
7.公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,感觉良好也没用。
8.地方远的尽量通过电话面试,不然白跑。
9.面试冲刺阶段,要保持每天学习,无论是学习新东西还是复习旧东西。
10.无论好的坏的公司,先拿到offer再说,最后看看自己这个公司自己是否值得去。
11.通过面试体验和面试官的风格 可以大概判断入职团队的情况。
12.拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源。
13.理想的公司可以多投几次,不同部门要求不一样。
14.问到自己有深入研究过的知识,抓住机会好好表现,吹是必须的,不要轻易错过吹得机会。
15 大公司可以走猎头渠道。谈待遇靠谱一点。
长按订阅更多精彩▼
如有收获,点个在看,诚挚感谢
剖析今日头条技术面试过程以及应该如何准备?相关推荐
- 今日头条前端面试过程与面试题
头条的面试业界最难,为准备头条的面试,我刷了好几天的题目,虽然最后被拒,但是在准备过程中知道了很多开发中被忽略的原理问题.这给我之后的面试打下了很好的基础. 到了头条总部,前台给了一套题.三道简答,三 ...
- 今日头条Android面试
点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 首先说一下,今日头条的面试主要分为三轮到四轮,如果是旺季面三轮,首先是基础面试,基本面试一般10个题左右,最近面试了一下今 ...
- 今日头条实习面试总结
转至:https://blog.csdn.net/runner_123/article/details/82864164 原 今日头条实习面试总结 2018年10月21日 14:19:39 runne ...
- 今日头条技术架构到底有多牛
????????关注后回复 "进群" ,拉你进程序员交流群???????? 专业拧螺丝-钟镇刚 链接: https://blog.csdn.net/mucaoyx/article/ ...
- 今日头条技术架构到底有多牛?
链接:https://blog.csdn.net/mucaoyx/article/details/84498468 今日头条创立于2012年3月,到目前仅4年时间.从十几个工程师开始研发,到上百人 ...
- 结合今日头条技术架构浅谈Java后台开发一些经验 - 立哥技术
- 剑气纵横三万里,一剑光寒九百州 前言:Java语言开发的后台系统(VUE架构),整合Swagger API,相较其他框架结构,有着语言简单,配置方便,轻量化,结构安全稳定的优点.今日头条在这3-5 ...
- 今日头条技术架构千字分析,
点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 今日头条创立于2012年3月,到目前仅4年时间.从十几个工程师开始研发,到上百人,再到 ...
- 今日头条技术架构分析,看这篇就对了!
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Anywhere, it is a good in the past, re ...
- 今日头条php面试经验,「今日头条」前端面试题和思路解析
一篇文章和一道面试题 作者用一道2017年「今日头条」的前端面试题为引子,分步讲解了最终结果的执行原因.其中涉及到了不少概念,比如异步的执行顺序,宏任务,微任务等等,同时作者限定了执行范围,以浏览器的 ...
最新文章
- Media Queries
- mysql timestamp json_mysql中timestamp,datetime,int类型的区别与优劣
- 第二届中国云计算应用论坛圆满落幕
- 禅道之需求追踪和多角色协作流程
- IntelliJ IDEA for Windows 默认模式下的快捷键
- c语言variant是什么变量,介绍一些常用数据类型的使用。先定义一些常见类型变量借以.doc...
- 有向图的拓扑排序算法JAVA实现
- svc的参考文献_WCF服务三:svc文件详解
- 《码出高效 Java开发手册》第八章 单元测试 (未整理)
- vue中使用window.open会在url前自动添加本地服务器的地址bug修复
- css3 之弹性布局
- 论文笔记_CV_AD_Visual Perception for Autonomous Driving
- jdk中ArrayList的实现
- Atitit mysql存储过程编写指南 1. 定义变量	1 1.1. 变量名以@开头用户变量 会话变量	1 1.2. 以declare关键字声明 存储过程变量	2 1.3. @是用户自定义变量,
- python实例代码爬虫_python 网络爬虫实例代码
- HTML5期末大作业:动物主题网站设计——酷酷动物主题响应式网页(5页) 大学生动物主题网页作品 动物网页设计作业模板 学生网页制作源代码下载
- 润生香港轻零食之品牌零食合作 I 专业·共赢·美味
- oracle数据库怎么分组查询,oracle数据库之分组查询
- ne_comment 表
- 实现一下模式识别(三)FLD
热门文章
- 关于学习Python的一点学习总结(28->收集参数及分配参数)
- HDU2066(Dijstra算法)
- python序列类型包括哪三种映射类型_python序列类型包括哪三种_后端开发
- codebilcks怎么新建c++文件_赤峰将新建1280个公交候车亭丨明年,将对这6条街路实施改造|雨污分流|赤峰|候车亭|红山区|泵站...
- 16进制输出C语言字符常量,基础C语言:进制、常量
- 如何通过 Vue+Webpack 来做通用的前端组件化架构设计
- 一张时序图让你看懂:脏读、不可重复读
- 安卓绿色联盟两项免费福利重磅发布:EMUI9.0和绿色应用2.0测试能力
- 单元测试 Mocking 类库需具备的特性
- 一次插拔U盘引发的学案