在面试的过程中,我略带紧张,但是通过这次机会,我认识到了自己的不足和提升空间。同时也看到了众多优秀的候选人和专业的面试官,深感荣幸能够参与其中。
我相信这次面试是我职业生涯中重要的一步,我会持续学习和进步,提高自己的技能水平,为未来的发展打下坚实的基础。虽然说这次面试已经收到offer,运气也是占有大部分吧,但自身感觉自己的技术储备还是差点意思。需要提升的地方还是有很多。
下面是我面试后回来总结归纳的一些面试官问的知识点以及问题。希望有更多的小伙伴加入到字节中共事。虽然加班有点严重,但薪资高呀,它香啊,是不是,嘻嘻嘻~~~~
字节一面
-
自我介绍。
-
计算机网络TCP的三次握手,UDP和TCP的区别。
-
知道的排序算法,以及复杂度。
-
两个1G排好序的文件,按序合并。
-
二叉树层序遍历输出,每一层输出数组(手写算法)。
-
数据库索引,多级索引。
-
LINUX进程与线程区别,进程间怎么通信,linux查询进程命令,怎么查询进程状态,线程IO,LINUX命令。
-
一个数组获取最大的k个数,大顶堆,排序。
-
SELECTED?IO?不清楚这个,没听过。
-
MySQL的行锁的实现原理
-
Redis发生主备切换会出现什么问题?
-
kafka的优势和发送过程?
-
jvm的垃圾回收算法?
-
类加载机制 双亲委派
-
spring aop 的原理 jdk、cglib实现的区别
-
ioc的原理
-
Spring 循环依赖问题
-
用过的中间件
-
redis常用场景
-
redis锁 为什么lua脚本删除?
-
分布式id,如何生成,使用redis自增序列号有什么风险?
-
redis缓存问题, 缓存穿透 击穿 雪崩 ,如何解决
-
缓存穿透加锁 何如加锁,会出现什么现象,a加锁时,b线程会发生什么?
-
算法题,同股票交易问题。
-
oracle mysq的区别(我们用的oracle)
-
mysql 慢查询 怎样优化,索引加哪些列,什么工具分析慢查询
-
事务的隔离级别
-
如何保证的可重复读?
-
MVCC怎么保证的可重复度
-
redolog
字节二面
-
从自我介绍出发问些相关问题,过往项目、如何学习?
-
数据库索引,索引失效,B+树与hash
-
mysql 事务、mvcc
-
redis 那些数据类型,zset 原理
-
解决过那些问题,最难的是那些?如何定位?
-
线程池有哪些,配置、原理;要实现一个使用最大线程数的线程池。
-
hashmap 扩容机制,为什么要在0.75的时候扩容;
-
hashmap 是线程安全的吗?为什么?
-
ArrayList、LinkedList 区别、原理;ArrayList 扩容
-
说说JVM 、gc root,为什么要有gc root?
-
场景:某个服务调用压力大,设计一个服务实现限流、缓冲。
-
对象一定分配在堆栈对象不一定分配在堆上,JIT可以实现栈上分配
-
JMM内存模型 原子性,可见性,有序性如何保证 工作内存与主内存 volatile,重排序举例
-
synchronized和Lock的区别
-
synchronized内部实现,偏向锁,轻量锁,重量锁 为什么需要自旋?
-
HashMap,HashSet,TreeSet,ConcurrentHashMap
-
Spring事务是怎么实现的?
-
类加载机制?双亲委派机制 自定义了一个String,那么会加载哪个String?
-
HTTPS和HTTP区别?非对称加密有哪些缺点?
-
XSS和CSRF攻击
-
NIO,Linux网络IO模型五种
-
Redis持久化
-
MySQL隔离级别,一致性视图,undo log,redo log和binglog
-
MySQL索引结构,回表,最左前缀原则
-
不使用第三个变量交换a和b的方式
-
算法题一:a+b+c=0
-
算法题二:链表倒数第N个节点
字节三面
-
介绍一下做过的项目,哪些挑战性比较大,比较有难度的
-
IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的
-
消息怎么存储,怎么发送,怎么知道消息已读和未读的
-
读了5条消息、又来5条消息,你是怎么去更新的,你的消息是幂等的吗?
-
项目里怎么用ES的,ES怎么支持搜索的
-
技术论坛网站的评论是怎么存储的
-
查询评论是在DB里扫表查询吗?怎么展示所有的评论?性能如何?想要查询更快可以做哪些优化?
-
结合缓存和DB的时候会出现哪些问题?要怎么解决?
-
有研究过哪些算法?
-
CAP理论的理解
-
如何设计实现中国象棋?
-
如何设计一个排队系统?
-
平时都是怎么学习的?最近都在关注哪些技术?为什么?
-
项目技术点,学到了哪些?也要具体知识点。
-
MySQL中为什么是最左前缀?
-
有没有接触过一些自动熔断工具
-
502可能的原因有哪些?
-
线上问题怎么排查?Full GC频繁怎么办?
-
服务的QPS,数据库的架构和版本。
-
SpringBoot的优缺点分析
-
SpringBoot的启动源码分析
-
服务的部署方式?
-
volatile原理和作用
-
什么是指令重排序,举个例子
-
AQS原理
-
JVM内存模型
-
类加载过程
-
双亲委派机制
-
介绍代理模式
-
redis数据结构
-
HTTP状态码,header
-
MVCC原理
-
算法题:按照之字形分层遍历二叉树,要求bug free,并且构造二叉树进行测试。
-
算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)
-
算法:买股票无限次;买股票只买一次;买股票有手续费;买股票最多买两次
HRBP面试:
-
自我介绍
-
为什么在看机会呢?在看什么类型的机会呢?
-
为什么看头条的机会?
-
你觉得头条是一家什么样的公司?
-
朋友同事如何评价你?
-
平时都有哪些兴趣爱好呢?
-
在原公司最享受的阶段是什么时候?为什么
-
你对我们的业务方向了解吗?
-
你对我们的业务方向和技术感兴趣吗?
面试前准备
1. Java基础知识:字节跳动是一家技术驱动的公司,对Java基础知识的要求非常高。需要对Java语言的基本概念、语法、面向对象编程等有清晰深刻的理解,熟练掌握Java核心类库及其他常用类库的使用。
2. 熟悉开发工具和常用框架:熟练掌握主流的Java开发工具,如Eclipse、IntelliJ IDEA等,熟悉常用的Java框架,如Spring Boot、MyBatis等,并且能熟练运用这些工具。
3. 深入理解算法和数据结构:字节跳动注重应聘者的算法和数据结构能力,因此需要深入理解并熟练掌握各种算法和数据结构,并能够灵活地在实际问题中运用这些算法和数据结构。
4. 注意常见的面试题:字节跳动对Java开发面试的考察比较全面,会考察一些比较经典的Java面试题,如单例模式的实现、HashMap的实现原理、线程池的使用、JVM内存管理等等。需要做好这些面试题的准备,有充分的解决方案和深入的思考。
5. 有实际项目和代码经验:字节跳动更加注重应聘者的实际项目和代码经验。因此,在准备面试时,建议通过自己的项目经验进行深入的讨论和交流,并能表达清晰的思路和解决方案。
除了以上的技术准备外,还需要注重细节和面试技巧。在面试中,要注意细节,掌握一些面试技巧,例如注意听清问题意思、避免东拉西扯、掌握言语简洁、条理清晰的口头表达技巧,以及掌握思维逻辑和反应速度等面试技巧。
以上就是字节面试题的总结以及面试都需要准备那些内容,希望对大家有所帮助喽~~~
面试题的答案我也整理出来了,有需要的小伙伴关注博主的公众号【Java烂猪皮】然后回复【666】即可获取喽~~~
有需要内推字节的小伙伴也可以找我哦,欢迎大伙加入字节,我在字节等着大家。