对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于二本,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个二本渣渣也奋斗了起来,竟拿下了今日头条Java工程师Offer。今天分享这波面经,主要是希望能够激励到同样被学历所困扰的技术人,能够对职业生涯和技术规划有一个参考价值,感谢!

一、面试今日头条Java工程师难在哪?(面试难点)

(1)难在“心态”

首先需要克服的第一关,实际上就是自己的心态。因为我是二本出身,base比较低,所以面试今日头条本就是一件没太大底气的事情,更何况是高级开发岗,所以心里就更容易没底。因此,在准备面试之前,调整心态这件事情就做了很久,所以难在“心态”一点也没错,心态没调整好,面试几乎是没戏的。

(2)难在“要求”

其次就是要求,所谓的要求实际上就是阿里对岗位的任职要求,也就是作为开发人员,你掌握了多少技术栈?

首先,你简历上写的肯定要会,其次就是你要拥有一些亮点,也就是说对某个技术有深入的了解,这样才能给面试官耳目一新的感觉。

那么,面试今日头条Java工程师,需要掌握多少呢?

  • Java集合:HashMap和ConcurrentHashMap,平时最好有读一些源码,最好知道每个参数为什么设置成这么大?有什么好处?
  • JUC包肯定要学,即使平时的编程根本不用,也必须得会。至少要知道aba,cas,aqs,unsafe,volatile,sync,以及常见的各种lock,死锁,线程池参数等,也必须要明白自旋,阻塞,死锁和它如何去定位,oom如何定位问题,cpu过高如何定位等基本的操作,你可以没有生产调试经验,但不代表你可以不会top,jps,jstack,jmap这些可能会问的东西。以及可能衍生的jmm模型和mesi协议等。
  • 大厂必问JVM:垃圾回收算法,垃圾收集器、JVM内存模型,每个区域用途,各种oom的种类,jvm调优经验,类加载过程,双亲委派等。
  • Spring就得抽空看源码了,一般会问到bean的生命周期,如何解决循环依赖,实现事务原理,动态代理原理等。
  • Dubbo也是必须问的,设计框架,负载均衡。
  • Redis更要多懂一点,单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型?包含一些缓存常见的问题击穿、穿透、雪崩、数据一致性等。
  • Mysql,事务,锁,索引,b+树,主从这些你必须会
  • Mq ,我用的rocketmq,你得知道为什么用,重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程,读过源码更佳,更好吹
  • Netty的话,零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好
  • 算法,建议去刷题,我运气好,简单的算法让我碰到了,一些快排,堆排,二叉树相关的,链表反转,成环,环节点,跳楼梯等常规的简单算法建议刷刷,双指针,dp,递归这些还是多找找感觉,大数据内存有限的场景的统计,有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。
  • 网络,http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。
  • 还有就是一些分布式事务实现,架构实现,比如抢红包,高并发下单等常规的场景设计,你来设计,你怎么去设计?多找一些大牛或者上网自己查,帮你看看有哪些漏洞,有哪些解决方案?业界有哪些好的中间件?

二、今日头条Java工程师面试真题(共三面)

一面

  1. 写一个题,找一个无序数组的中位数
  2. 写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。
  3. 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少,nlgn。
  4. 操作系统了解么,Linux和windows
  5. 说说Linux的磁盘管理,一脸懵逼
  6. Linux有哪些进程通信方式,五大件
  7. Linux的共享内存如何实现,大概说了一下。
  8. 共享内存实现的具体步骤,我说没用过
  9. socket网络编程,说一下TCP的三次握手和四次挥手,中间网络不好,面试官都没听清楚,很尴尬
  10. 跳过网络,问了项目的一些东西
  11. 问我如何把docker讲的很清楚,我从物理机,虚拟机到容器具体实现稍微说了下。
  12. 问我cgroup在linux的具体实现,不会。
  13. 多线程用过哪些,chm和countdownlatch在实习用过

二面

  1. 自我介绍
  2. Java的集合类哪些是线程安全
  3. 分别说说这些集合类,hashmap怎么实现的,扯了很多
  4. MySQL索引的实现,innodb的索引,b 树索引是怎么实现的,为什么用b 树做索引节点,一个节点存了多少数据,怎么规定大小,与磁盘页对应。
  5. MySQL的事务隔离级别,分别解决什么问题。
  6. Redis了解么,如果Redis有1亿个key,使用keys命令是否会影响线上服务,我说会,因为是单线程模型,可以部署多个节点。
  7. 问我知不知道有一条命令可以实现上面这个功能。不知道
  8. Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么,不清楚。
  9. Redis的list是怎么实现的,我说用ziplist quicklist实现的,ziplist压缩空间,quicklist实现链表。
  10. sortedset怎么实现的,使用dict skiplist实现的,问我skiplist的数据结构,大概说了下是个实现简单的快速查询结构。
  11. 了解什么消息队列,rmq和kafka,没细问
  12. 写题时间到。第一题:写一个层序遍历。
  13. 第二题:写一个插入树节点到一颗排序树的插入方法,使用递归方式找到插入位置即可。
  14. 第三题:一个有向图用邻接矩阵表示,并且是有权图,现在问怎么判断图中有没有环。

我说直接dfs走到原点即为有环,刚开始写的时候我又问了一嘴是不是只要找到一个就行,面试官说是的,然后我说这样应该用bfs,有一次访问到原节点就是有环了。
面试官问我不用递归能不能做这个题,其实我都还没开始写。然后我就说没有思路,他提示我拓扑图。我没明白拓扑图能带来什么好处。现在一想,好像当访问过程中找不到下一个节点时就说明有环。做一个访问标记应该就可以。

  1. 第四题:一个二叉树,找到二叉树中最长的一条路径。

我先用求树高的方式求出了根节点的左右子树高度,加起来便是。
然后面试官提示需要考虑某个子树深度特别大的情况,于是我用遍历的方式刷新最大值,用上面那个方法遍历完整个树即可。
面试官说复杂度比较高,但是由于时间问题就说结束了。

三面

  1. 介绍一下项目
  2. 你谈到的并发技术,chm和countdownlatch怎么使用的
  3. 为什么要这么处理,使用线程池是不是也可以。我说也可以
  4. 操作系统的进程通信方式,僵尸进程和孤儿进程是什么,如何避免僵尸进程,我说让父进程显示通知,那父进程怎么知道子进程结束了,答不会。
  5. 计算机网络TCP和UDP有什么区别,为什么迅雷下载是基于UDP的。

我说FTP是基于TCP,而迅雷是p2p不需要TCP那么可靠的传输保证。他说不对,我说是不是因为要建立连接,开销比较大,他说不对。我说p2p的发送节点很多,所以不是那么需要各种传输保证,他说不对。我说TCP会自动分包而TCP可以自己定义数据长度。。他还是说不对。最后他说算了。我们问下一个吧。

  1. 操作系统的死锁必要条件,如何避免死锁。
  2. 写一个LRU的缓存,需要完成超时淘汰和LRU淘汰。

我说用lhm行不行,他说用linkedlist和hashmap可以。于是我就写了put和get函数,进行了队头队尾操作。他说get复杂度会不会太高,我瞎掰了半天没找到办法,他说那就这样吧,今天面试到这。

HR面

  1. 兴趣爱好
  2. 三年到五年的职业规划
  3. 意向公司和城市
  4. 工作经历和收获
  5. 工作中最大的困难
  6. 为什么换公司
  7. 你的缺点和优点
  8. 你觉得你比其他人优秀的地方说三个
  9. 为什么想来我们部门
  10. 巴拉巴拉

三、拿下今日头条Java工程师offer前,我做了些什么?

(1)准备简历

简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历意外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。

(2)提升技能

实际上我有个今日头条工作的朋友很早之前就向我透露过,很多人认为大厂看重学历,但实际情况并不完全是,在今日头条只以能力论英雄。所以,在日常生活中,通过不断地学习,提升自己的能力,努力去拉近自己与目标值的距离,这是很有必要的,也是未来的必然趋势。

关于我是如何提升我的技术栈的:

① 阅读实战文档包括一些源码笔记和技术笔记

全部资源获取方式已放在文末!

② 猛刷面试题

全部资源获取方式已放在文末!

做个总结

很多学历不太好的人,可能对自己没有太大的信心,实际上任何事情都有“奇迹”发生,而这个“奇迹”关键还是要靠自己去创造。无论你是小白菜鸟,还是技术大牛,日常都不能够落下学习这件事情,一旦落后下来,就容易遭到淘汰。做一个有深度,有广度的程序员,赶紧学习起来吧!

以上我的经历希望能够给大家带来帮助,另外自己手头上的资料整理均可免费分享,需要这些资料的朋友一键三连后扫描

码农逆袭传奇:二本Java程序员如何闭关6个月斩下月薪30k的字节Offer相关推荐

  1. Zoom 袁征码农逆袭:8 次申请美国签证被拒,独闯硅谷成亿万富翁

    作者 | 哈那 出品 | 出海瞭望(ID:Globalinsights) Zoom,袁征(Eric S. Yuan). 这可能是你最近在中外科技.财经类报道里经常看到的关键词.继去年成功在纳斯达克上市 ...

  2. 11 年艺术生转行,逆袭成蚂蚁金服程序员,出版 TensorFlow 教材!

    编辑 | Jane 采访嘉宾 | 唐源,蚂蚁金服技术专家 出品 | AI科技大本营(ID:rgznai100) 今天是 2019 年最后一天,伴随着即将到来的 2020 年,第一批 90后互联网大军即 ...

  3. Java程序员用了3个月从月薪5k涨到20k,我是这么做到的?

    学生投稿 先说一下自己的个人情况,大专生,18年通过校招进入湖南金蝶软件公司,干了接近3年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干 ...

  4. 从事Java程序员五年的艰辛之路。月薪从3k到18k,我整整花了五年

    先说一下自己的个人情况,大专生,16 年通过校招进入广州光汇科技软件公司,干了接近 3 年的 CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业 ...

  5. 陷阱太多!究竟该如何应对逆袭神器期权?某程序员历经4次上市公司,终于顿悟!...

    期权是许多公司用来激励员工的一种方法,有期权的员工可以在将来以某个固定价格购买公司股票.比如某上市公司现在股价为9元,公司给员工发放期权一亿份额,约定几年后员工可以用10元的价格买入一亿股公司股票.如 ...

  6. 看看30万码农怎么评论:培训出来的程序员真的很渣吗?

    软件行业技术日新月异,变化极快.首先是自学能力,新技术一般都是英文文档,需要vpn.普通大学生都做不到.再次是基本功力,能够举一反三.新技术更新很快,但基本思想迭代的很慢.好的基础意味着适应性更强.还 ...

  7. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.NET/csh624366188 欢迎关注微信账号:java那些事:csh624366188.每天一篇java相关的文章 大 ...

  8. Java程序员由笨鸟到菜鸟 电子版书正式发布 欢迎大家下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 欢迎关注 ...

  9. JAVA程序员已成为最疯狂的加班行业,没有之一?

    程序员界加班经常成为业界讨论的话题,夜幕降临,大楼里依然灯火通明时,那一刻,仿佛让我渐渐的忘记了时间,我知道我不是一个在加班,我不是一个人!连续加班已成为常事,一点不夸张. "太可怕了,我宁 ...

最新文章

  1. 硝烟四起的云服务双十一促销大战,谁更便宜?
  2. git add 之后因为没提交正确文件需要撤销
  3. BM22 比较版本号
  4. 【Android】Looper消息分发(msg.target.dispatchMessage), Handler消息处理(消息回调/外部回调/自身回调)
  5. tomcat工作原理以及详解操作
  6. Android轩辕剑之ActionBar之一
  7. 上海著名网络公司招聘高级软件工程师
  8. 荐一个不错的UI设计网站: uimaker
  9. Mac上双系统中Windows无法使用苹果鼠标键盘,如何处理
  10. 英伟达驱动更新记录_英伟达更新驱动最好的方式 - 卡饭网
  11. pc端+移动端电商源码
  12. PS将可见图层创建为一个新的图层,保留原来的图层,Photoshop 导出可见图层
  13. mysql 回滚sql_Mysql误操作后使用binlog2sql快速回滚
  14. 【C++ Primer】第十章 泛型算法 (练习)
  15. 小米、华为、一加、OPPO接连入场,电视的魅力在哪里?
  16. 前沿|十位顶级大咖为您把脉容器技术大势
  17. 培训机构无线覆盖解决方案
  18. 非线性方程求解 :二分迭代法和牛顿迭代法
  19. 从黑天鹅事件到墨菲定律
  20. xbox解锁服务器和语言,微软终于还是没忍住!国行Xbox One实现解锁了

热门文章

  1. DB2 SQL0668N SQLSTATE=57016 reason code 1
  2. 接口大师v3.12,一套满足企业自建OpenAPI、接口平台的解决方案、产品和源代码
  3. 计算机丢失api-ms-win-crt-runtime-l1-1-0.dll解决方案
  4. windbg 调试崩溃
  5. qrobot开发总结之android完全退出程序
  6. 植物大战僵尸:手工计算偏移地址
  7. 中原证券分析报告(0607)
  8. Wordpress安装woocommerce插件出现500错误Internal Server Error
  9. html5 光影效果,基于 HTML5 WebGL 的 3D 场景中的灯光效果
  10. 刘强东刷屏了,一片好评。京东宣布全员涨薪两个月!