前言

双非渣硕,本以为简历都过不了...,还好字节能给一次机会。前阵子字节跳动的提前批开始了,看宣传是说有海量HC,机会多多,本着涨涨面经的心理,然后就投递了一下杭州那边的Data部门,首先在这里还要非常感谢内推我的小哥哥,非常热心的帮我跟踪进度,因为中间还出了一些小插曲(我投错部门了。。。),还是热心的小哥哥帮我联系HR,最后把我转到想要投递的部门了,我投的是java后端开发~面试项目大部分问题是围绕我的开源项目 蘑菇博客 展开的,还有就是我之前准备面试的一些 笔记(大佬请轻喷..)

注意:我投的是java后端开发~

面试时间

HR面完后,等了一个礼拜多,以为凉凉了,没想到收到惊喜,许愿成功~

  • 第一天:第一面 + 第二面
  • 等了两天:第三面 + HR面
  • 过了一周后:等来了意向书

第一面

第一面我觉得应该是基础面,重点考察的是自己技术的广度 和一些技术的掌握情况,一面小哥哥也没有深究于某个特定的点,面试时间大约1个小时。

  • 自我介绍
  • 怎么打算投递后台岗位的,没有考虑契合自己研究方向的工作
  • 有了解过OAuth2.0么,说说你对OAuth2.0的理解
  • 蘑菇博客开发过程中,有了解或学习其它的开源框架么
  • 蘑菇博客文章发布的流程是怎么样的,是多人博客系统么
  • 对其它的一些博客框架有了解么,比如hexo
  • hexo和蘑菇博客相比有什么区别呢?蘑菇博客多了哪些功能和优势
  • 看你蘑菇博客用到了RabbitMQ,那谈谈为什么引入RabbitMQ?
  • RabbitMQ和其它消息队列,比如ActiveMQ,RocketMQ,Kafka有什么区别
  • Redis在你博客项目中的使用,为什么引入Redis?
  • Redis中存储的是热门文章,是通过什么来得到的?这样做会有什么问题么?
  • 有听过长尾效应么?你通过推荐字段设置的推荐等级,这样会让这些文章一直保持在较高的点击量,而且热度和点击量也不会随着时间而降低,有什么解决方案么?
  • 我看到你有用到JustAuth这个登录授权?说说它会存在账号泄漏的问题么?
  • 下面谈谈Redis,它会存在线程切换的问题么?
  • 谈谈Redis单线程模型和IO多路复用
  • Redis的大Key的问题,如果有个Value的大小是2M,会有什么问题么?最大支持的Value大小是多少?
  • 谈谈Redis集群 Redis Cluster,以及主从复制原理?
  • 说说Redis中的哨兵,即Redis Sentinel
  • 下面来聊聊Linux,你知道Linux怎么查看当前的负载情况么?
  • 你还知道其它的一些Linux命令么?
  • cat、tail、vi、vim命令的区别,分别说一说?
  • 如果Linux下需要打开或者查看大文件,你会怎么做?
  • 下面聊聊Http Code,你知道 3XX 状态码 对应的是什么?
  • 再谈谈你知道的其它一些状态码,4XX 和 5XX?
  • 下面我们来做个题目吧?语言任意,选择喜欢的(ps:其实是leetCode原题,没有做过类似的,想了几分钟没有思路,哭。。,想问问思路,然后说换一题吧,那就,事后想想还挺简单的,根据第一位排序一下就好了)
# 给定一个数组,例如 [1,1,2,2,2,3,3,3,3]这样的,里面的数组不一定连续并且有序,假设我输入 2,这个2表示出现次数最高的两个# 那么你需要给我返回 2,3
  • 那就换个题目吧,看看下面这个题目,找数组出现次数最多的TOP N,回头听室友说,好像又是leetcode原题,泪目,算法能力太弱,没怎么刷题。
# 给定一个数组,例如 [1,1,2,2,2,3,3,3,3]这样的,里面的数组不一定连续并且有序,假设我输入 2,这个2表示出现次数最高的两个# 那么你需要给我返回 2,3

然后我最开始的思路就是,通过hash存储出现的次数,然后key就是数组中出现的值。最后再对hash中的次数进行排序,最后得到top N,因为时间复杂度是O(N^2),问有没有优化思路,能否优化到O(N),想了半天没有想出来,没有充分运用以及构建好的hash表

后面面试官给讲了一下思路。从数组长度向下遍历进行查找

  • 反问环节,问了问面试的表现,被告知算法能力比较薄弱,以为就此凉凉。。。然后一面说这边可以让你进入下一环节,这边大概需要等5到10分钟左右

第二面

二面考察的是技术深度面试,面试时间大约50分钟左右

  • 自我介绍
  • 博客已经开源了么,用的什么开源协议,博客的用户多么?
  • 看你博客中用到了Solr和ElasticSearch,谈谈它们的原理,以及倒排索引?
  • 对于Solr或者ES里面用到的一些中文分词器有了解过么?
  • 谈谈那些技术栈,你比较熟悉的是那些,mysql 和redis?
  • 聊聊MySQL的底层索引结构,InnoDB里面的B+Tree?
  • B Tree 和 B+ Tree的区别
  • 聊聊MySQL索引的发展过程?是一来就是B+Tree的么?从 没有索引、hash、二叉排序树、AVL树、B树、B+树 聊。
  • 谈谈MySQL里面的事务,说说什么是事务?
  • MySQL里面有那些事务级别,并且不同的事务级别会出现什么问题?
  • 谈谈可重复读和幻读的区别?
  • MySQL中如果使用like进行模糊匹配的时候,是否会使用索引?一定不会用么?(索引这块了解的太少了,二面结束后,回去恶补了一下)
  • 谈谈Redis吧,在你项目中的具体使用?
  • 谈谈Redis如何实现分布式锁?
  • 蘑菇博客是否存在缓存不一致的情况,你是如何解决的?
  • 谈谈Redis中缓存穿透的问题,以及解决的方法?
  • 还有其它解决缓存穿透的方法么?布隆过滤器有了解过么?
  • Redis中大面积的缓存失效,然后请求全部打到数据库,有什么解决方法?
  • 如果出现一些热点数据,比如明星之间的新闻,造成大量的吃瓜用户涌入后台,但是服务器还没有缓存对应的数据,这样可能造成数据库宕机,如何避免这样的情况?
  • 聊聊 JVM的组成结构?
  • 谈谈垃圾收集原理?以及垃圾收集算法
  • 复制算法 和 标记整理算法?
  • 为什么不在新生代使用标记整理算法?或者在老年代使用复制算法?
  • 有了解过Volatile么?谈谈你对Volatile的理解
  • Volatile如何保证可见性的?以及如何实现可见性的机制。
  • 如果大量的使用Volatile存在什么问题?
  • 谈谈操作系统的线程,以及它的状态
  • 线程和进程的区别?
  • 为什么要提出多线程应用,而不是多进程应用呢?
  • Linux你平时都有用到什么命令呢?
  • 如果我需要查看端口号或者进程号,你会使用什么命令?
  • 谈谈你做的另外一个项目吧?稍微介绍一下
  • 来吧,写个题目试试
# 链表的两两翻转 # 给定链表:  1->2->3->4->5->6->7 # 返回结果:  2->1->4->3->6->5->7
  • 毕业时间是什么时候?现在面试的是实习岗位么?
  • 反问环节:追问面试表现?告知 Redis这块掌握的还可以,但是MySQL这块显得不足。问后续的安排。

第三面

应该是Leader面,面试时间大概50分钟

  • 自我介绍
  • 好奇一下,用码云的人应该不多吧,为什么没有用Github?
  • 你英文水平怎么样?
  • 聊聊开源项目吧?我看这项目已经有800多赞了,你在这开源项目主要做了什么工作?
  • 我们找些点来聊聊吧?先从ES和Solr开始,你们这两个都有在用么?
  • SQL的方式实现搜索,你是怎么做的呢?
  • 使用like匹配的时候,会不会查询非常慢呢?
  • ES和Solr的底层都用了lunce,谈谈你对lunce的理解?
  • lunce里面也有用到分词器,比如一些新的词 “新冠肺炎” ,它能不能做到很好的划分呢?
  • 除了人为的维护词库,来解决最新词语的分割,你还有知道其它什么更好的方法么?
  • 你有了解过其它什么开源的分词库么?
  • 谈谈字典树?
  • Solr 和 ES底层都用了Lunce,那他们两者有什么区别呢?
  • Solr所谓的集群环境 和 ES所谓的分布式环境,它们之间有什么区别呢?
  • 上面你有提到微服务,你有了解过微服务是个什么样的理念么?
  • 你现在的微服务,也是打包成多个jar包,部署在一个服务器上,如果服务器出现问题了,也会造成服务不可用,有没有好的解决方法呢?
  • 聊聊服务的注册与发现?
  • 服务的注册和发现,其实依赖于一个注册中心的概念,会不会出现注册中心挂掉,而导致整个服务不可用,有没有什么好的解决方法呢?
  • 有了解过Zookeeper整个的选举过程么?
  • 谈谈Zookeeper的分布式一致性协议?
  • 聊聊索引,我给你写个表,看看下面的查询语句,走了那些索引?
create table 'tb' (   id int,   name varchar(64),   status int,   createtime timestamp,   PRIMARY KEY (`id`))-- 创建了三个普通索引create index  index_name on table('name')create index  index_status on table('status')create index  index_createtime on table('createtime')-- 给定SQL语句,判断下面查询会用到几个索引select * from  tb where status = 1 and name = "zhangsan"
  • 上述SQL用到了几个索引?分别是那几个?
  • 有了解过InnoDB底层的索引结构么?
  • 通过两个索引查询出来的结果,会进行什么样的操作?交集,并集?
  • 如果你在MySQL中遇到一些慢查询,有什么解决方法么?
  • 谈谈explain?执行的explain后,出现的那些字段,能够帮助我们呢?
  • 我看你的博客里面,关于Redis还有好几篇文章,我们可以聊一聊你对Redis的理解?
  • 为什么Redis能够保持这么高的并发响应?
  • 有了解过IO多路复用技术是个什么样的原理
  • 通过一个线程,同时连接多个线程不会存在多个线程切换么?(感觉进坑了。。)
  • 当你通过jedis进行连接redis的时候,已经和一个进程连接了 ,redis还能够和其它的进程进行通信么?
  • Redis每秒能够处理处理十万请求,如果按照你上面说的,那说明它每次交互只在 1/十万 秒内完成?
  • 有了解过Redis的源码么?
  • MySQL用了B+Tree,Redis中的SortSet内部用了跳跃表,他们之间有什么差别?为什么MySQL不用跳跃表,或者是Redis不用B+Tree呢?
  • 感觉自己编码功底怎么样?那我们先聊聊操作系统的知识再给你一道题吧。在操作系统中,有高速缓存,主存,虚拟内存,外存,有知道它们之间有什么样的关系,以及它们的作用是啥?
  • 对它们来说,肯定会存在一个问题,就是当我们的主存满了,或者虚存满了,那么需要存在一个换页操作,你知道有那些换页算法么?
  • 我们来聊聊LRU?叫你手写一个LRU算法谈谈你的思路?
  • 用链表的方式实现,时间复杂度是O(N),有没有什么方式能够让它是O(1)的时间复杂度呢?
  • OK,思路还可以,那你手写一个LRU算法吧?(双向链表 + Hash?)
  • 反问环节:问了下组织架构,以及python和go在项目中的使用。然后问了下面试的表现,答:代码写的不算好吧,LRU写成这样我觉得是不太合适的。(心碎的声音,感觉到凉凉的气息...),结束后以为面试已经结束,后面在准备关页面的时候,面试官说等一下,还有同学和我聊?

HR面

花10来分钟做个简单的沟通

  • 自我介绍
  • 考研的时候为什么选择的是这个学校呢?
  • 回顾一下,上大学到现在这段时间内,让自己最有挫败感的事情是什么呢?
  • 有哪些方面需要在改进的么?
  • 对于以后参加的工作,你主要会看重哪些方面呢?
  • 同学这块,大家都有在投递字节这边的岗位么?
  • 反问环节:关于面试结果,告知,这边只是做简单的了解,面试结果大约会在一周左右出来,到时候会有邮件或者电话通知。关于面试的结果,需要综合前面的几个面试官进行综合评测,才能决定是否录取。

总结+面试前的准备(供大家参考学习)

给大家个建议,面试官如果愿意和你聊组里业务,一定要把握机会好好聊,最好能提出让面试官眼前一亮的问题,直指业务核心。代码谁都会写,基础知识网上都能查到,但是对产品的理解和新的想法不是谁都有的

(1)第一步,面试前整理一个完整知识架构大纲

我将架构体系分为五大模块:并发编程、JVM性能调优、Spring开源框架源码解读、缓存数据库、分布式架构,微服务架构

(2)第二步,通过大纲对面试中的高频技术逐个攻克

1,并发编程(手写笔记:并发编程+并发编程_原理+并发编程_应用+并发编程_模式)

  • 并发编程共享模型篇
  • 并发编程_模式篇
  • 并发编程_应用篇
  • 并发编程_原理篇

并发编程共享模型篇

并发编程_模式篇

并发编程_应用篇

并发编程_原理篇

2,性能调优(Java性能调优实战:Java编程性能调优+JVM性能优化+Mysql调优笔记)

  • JVM性能优化

JVM性能优化

  • JVM性能监测及调优

JVM性能监测及调优

  • Mysql调优笔记

3,Spring开源框架源码解读

4,缓存数据库

  • Redis核心笔记

Redis核心笔记

  • MongDB基础到进阶

MongoDB快速上手

MongoDB集群和安全

5,分布式架构

  • Kafka源码解析与实战

6,微服务架构

  • Spring Cloud Alibaba技术栈全解

  • Spring Cloud微服务笔记

  • k8s+Jenkins笔记

(3)第三步,刷面试题,面试字节跳动算法是必问的

团灭 LeetCode的算法刷题宝典

算法刷题小册

25大Java面试专题

字节跳动总体来说,面试体验还很不错的,尤其是在手撕代码题的时候,面试老哥会先叫你提供思路,如果你说的思路有问题的话,会帮你拨正,然后在进入coding阶段,但是怎奈何平时没怎么练习算法,leetcode做的少,面试两行泪。。这也算是提前批打响第一枪,期待后面精彩表现~

以上就是我在面试前整理搜集的面试资源和一个学习路线规划,希望能对大家有所帮助

渣硕试水字节,本以为简历都过不了,123+HR面直接拿到Offer相关推荐

  1. 22天试水Java社招,历经“华为、蚂蚁、字节跳动、PDD”等六家

    年中的时候因为换工作的缘故,陆续参加了华为.蚂蚁.字节跳动.PDD.百度.Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer. 最近时间稍微宽裕点了,写个面 ...

  2. 【Java面经】非科班渣硕转行及求职分享

    背景介绍 楼主某末流985渣硕一枚,磕盐不会,偶然接触了下编程,然后又稍微学了学Java,后面就走上了程序猿的道路,今年四月侥幸去菊厂实习了一波(虽然没学到东西). 秋招拿了几个一般的offer(大佬 ...

  3. 南京渣硕求职路(网易美团头条百度面经)+Java学习路线(拙见)

    首先自我介绍一下,楼主南京渣硕一枚,秋招主要投递JAVA后台岗位,面过以下公司:网易+美团+头条+百度+华为+中兴,拿下了网易和中兴提前批offer,华为依旧泡池子,美团四面挂,头条三面挂,百度今天下 ...

  4. 211已经毕业工作一年了,腾讯试水一面连环50问,瞬间傻眼了,太难了。

    背景 211毕业至今刚好一年,我曾做过两三个月的测试感觉不是很合适,后面选择从事后端开发,还挺香.现在已经进入秋招的提前批了,想着去大厂试试水,就去了腾讯,整个一面下来我整个人都傻了,表示怀疑人生.. ...

  5. 渣硕自学两年转行Android,零经验春招拿美团30w年薪offer,HR说我是头一个!

    前言 本人为某末流211工科硕士, 找工作时,经常在网上找资料学习.面经刷题,为回馈朋友们,写下这篇分享贴,也算是对我求学生涯的总结. 说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结 ...

  6. 渣硕Android开发找工作都这么难了吗?千万不要轻易离职......

    坐标北京,21年3月毕业工作,北京某大型互联网码农集散基地渣硕背景. 第一份工作在北京的一个80人左右规模的小公司做Android,最近刚刚跳槽成功. 做Android是从19年中旬开始,毕业前的第一 ...

  7. 985毕业工作一年,腾讯试水一面连环50问,瞬间表示怀疑人生了.

    背景 985毕业至今刚好一年,我曾做过两三个月的测试感觉不是很合适,后面选择从事后端开发,还挺香.现在已经进入秋招的提前批了,想着去大厂试试水,就去了腾讯,整个一面下来我整个人都傻了,表示怀疑人生.. ...

  8. 哈工大导师禁止实验室硕士出去实习,称「实习就像和35岁渣男试婚」,你怎么看?...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文授权转载自募格学术(ID:mugexueshu) 参考资料:知乎 ...

  9. linux多线程求和_211渣硕,海投200+家Java岗(面40,过7),收获多份offer!

    背景: 211渣硕,电气专业转JAVA后台,看书很少多数是在刷面经,能找到工作实属侥幸,现献上自己的面经,希望能帮助到别人 部分面试结果: 先上总结: 如果实力不够硬建议还是海投,会很累,但机会多一些 ...

  10. 【面试招聘】双非渣硕的秋招路

    NewBeeNLP原创出品 作者 | 带带大兄弟 写在前面 双非渣硕,0实习,3篇水文,三个给老板当打工仔的nlp横向项目,八月份开始准备秋招,纠结开发还是算法,开发的话菜而自知,算法也是菜而自知,最 ...

最新文章

  1. 14. 变更管理(Change Management)
  2. huge page 能给MySQL 带来性能提升吗?
  3. poj1222开关问题
  4. 集美大学java考试题_我的JAVA习题集2
  5. 原来带有python又装了一个anaconda有影响吗_anaconda python环境与原有python环境的坑...
  6. Caffe 编译错误记录
  7. 04-doucument对象属性和方法
  8. IBM量子计算新突破:成功构建50个量子比特原型机
  9. 简单图形打印(需求分解)
  10. Lucene学习笔记
  11. gnome boxes_如何使用GNOME Boxes的快照功能
  12. 计算机的系统组成说课教案,计算机系统组成说课稿.doc
  13. linux内核优化项,Linux内核优化配置
  14. 开源超级终端工具——WindTerm
  15. excel单元格内容拆分_Excel | 单元格内容换行方法
  16. 百果园app系统开发b2c模式详解
  17. 网易暴力裁员事件,真的让人寒心
  18. Typora修改图片保存位置
  19. 从ES5到ESNext-这是自2015年以来添加到JavaScript的所有功能
  20. 【趣文】秦始皇与区块链竟然有关系

热门文章

  1. 不错的免责声明,当义愤填膺又碍于河蟹Society的时候用得到
  2. [设计思想] 游戏系统设计思路的牢笼 一味追求实用性
  3. 企业信用评级对企业具体好处
  4. 蓝牙标准定义[服务UUID]
  5. 4.8 虚拟专用网络VPN和网络地址转换NAT
  6. 关于海关新规的一些解读(附热门产品税率表)zz
  7. 数字化设计解决BIW焊装产线协同问题
  8. 入门C++的第一个问题——多次输入
  9. YOLOv5小目标切图检测
  10. idea2020 java - 不能执行jar文件: “no main manifest attribute”的解决办法