最近字节提前批开了,作为互联网的头部企业,往年字节的招聘人数是相当多的。
想去字节的应届生也是非常多,细心的朋友可能已经发现,字节去年提前批的官方公众号推文写的是4000+hc,今年写的却是2000+。
好家伙,直接缩水一半!
都知道今年的互联网大环境不太好,但谁也没想到字节的hc缩水这么严重!
很多同学投递了提前批的简历,可能是由于提前批hc有限,所以很多同学反馈简历被挂了,别灰心,秋招继续投!
为了帮助进入面试的同学可以更好准备面试,小白给大家整理了部分21年面试的高频问题,供大家参考学习。
这些高频问题可能覆盖面不全,但都是从大量的面经中提取出的超高频的面试问题,重在帮助大家面试前进行突击的。
一定要不要只看高频面经,平时一定要加强基础知识的学习!
注意⚠️:最不缺的就是八股类的答案,缺的是大家对八股的个人理解!
Java相关
-
ThreadLocal的原理?应用场景?
-
sleep()和wait()方法的区别是什么?如何唤醒?
-
线程的生命周期
-
synchronized和lock的区别?发生异常时 synchronized和lock锁的占用情况?synchronized升级过程?
-
线程池了解多少?
-
乐观锁和悲观锁,CAS带来的问题
-
==和equals的区别,Stringbuilder和StringBuffer的区别
-
垃圾回收算法?CMS回收器的过程?
-
Java的内存模型,可见性是什么?
-
Java线程不安全的问题,还有如何实现线程安全
-
volatile关键字的作用是什么
-
强引用 弱引用 虚引用 软引用
-
HashMap的不安全原因?
-
AQS的原理
数据库
-
MySQL慢查询如何优化?
-
数据库的索引结构是什么?
-
为什么使用B+树?对比B树,哈希。
-
聚簇索引和非聚簇索引的区别。
-
数据库的三大范式
-
事务的隔离级别
-
事务的ACID分别是什么?怎么保证的?
-
为什么B+树高度就小,是因为什么,B树为什么就高一些?千万行的数据这个B+树索引大概多高?
-
数据库什么时候需要建立索引?什么时候索引会失效
-
联合索引(a,b,c) where 条件之后分别走c,b,a 用and连接会走索引吗
-
索引为什么能加速查询?B+树作索引的优势。
-
什么是回表
-
binlog,redolog,undolog三者的区别了解吗?
-
MVCC
中间件
-
Redis是否了解过底层?
-
zset的跳表如何实现的?
-
Redis如何实现分布式锁
-
Redis怎么实现限制用户请求的?怎么计数+1的?如果多条线程过来怎么保证线程安全?
-
AOF和RDB有啥优缺点?AOF重写了解过吗?
-
缓存穿透,缓存击穿,缓存雪崩,什么概念和解决方案
-
Redis如何淘汰过期数据?
-
Kafka使用场景?为什么用?为什么吞吐量高?
-
MQ如何保证消息不丢失
计算机基础
计算机网络
-
HTTP session和cookie的区别?
-
TCP 三次握手/四次挥手,流量控制,拥塞控制?
-
TCP和UDP的区别?
-
ARP协议工作原理?ARP攻击?如何解决?
-
DNS的解析过程
-
HTTPS ,客户端如何验证证书,HTTPS不能防止什么攻击
-
网络分层结构
-
浏览器输入网址,返回error:服务不存在,如何排查?
-
一次HTTPS的请求过程
-
介绍HTTP各个版本(1.0、1.1、1.x、2.0、3.0)的区别
-
HTTP中的长链接如何实现的
-
Time wait和Close wait的区别
-
HTTP的状态码有哪些?http请求头有哪些?
-
Dos和XSS攻击是什么?如何防止?
-
中间人攻击知道吗?怎么做https的抓包?https怎么篡改?
-
输入一个URL都发生了什么?
操作系统
-
虚拟地址和内存地址
-
进程和线程的区别?通信方式?线程间切换怎么做
-
了解IO模型吗?介绍select/poll/epoll的区别
-
僵尸进程和孤儿进程
-
进程调度算法,哪些是抢占式,哪些是非抢占式?
-
死锁产生的条件,如何避免?
-
fork一个子进程发生了什么?
-
水平触发和边沿触发
-
用户态与内核态的区别
项目相关
-
项目中遇到的难点
-
有没有用过授权登录,第三方登录,了解过OAuth2.0吗?
-
牛客论坛项目如何识别热点数据?如何计算?如何更新热度?
-
JWT说说?
-
找个印象最深的项目说说?(简历中不止一个项目)
-
你项目中遇到的最大的问题是什么?你是怎么解决的?
-
你项目中用到的技术栈是如何学习的?
-
为什么做这个项目,技术选型为什么是这样的?
-
登录怎么做的?单点登录说说你的理解?
-
项目遇到的最大挑战是什么?(类似问题2)
-
说说项目中的闪光点和亮点?
-
项目怎么没有尝试部署上线呢?
-
介绍项目具体做了什么?(项目背景)
-
如果让你对这个项目优化,你会从哪几个点来优化呢?
手撕代码
-
组合总和III(LeetCode 216)
-
n个节点的有向无环图,找到所有从0→n-1的路径。
-
最长的回文子串(LeetCode 5)
-
根据前中序重构二叉树(LeetCode 剑指offer 07)
-
螺旋矩阵(LeetCode 54)
-
手写单例模式
-
二叉树的最近公共祖先(LeetCode 236)
-
删除排序链表中的重复元素II(LeetCode 82)
-
手写LRU
-
不递归实现树的后序遍历
-
链表右移k位
-
二叉树的锯齿形遍历(LeetCode 103)
-
接雨水 (LeetCode 42)
-
打开转盘锁(LeetCode 752)
-
每K个一组反转链表
-
两个升序数组求交集
-
TOPK (LeetCode 215)
-
反转链表
-
重排链表 (LeetCode 143)
-
返回链表的环入口
-
两个字符串找最长公共子串
-
两个有序数组找中位数
-
二叉树的最大宽度 (LeetCode 662)
-
链表内指定区域反转
-
数组求前K大的数
-
k个有序链表合并
-
完全平方和
-
二叉树的路径和
-
树的右视图
-
手写快排
-
有序链表转平衡二叉树
-
交叉链表求第一个公共点
-
硬币兑换
-
课程表(LeetCode 207)
-
给一个升序数组,部分掉换,例:[4, 5, 6, 7, 0, 1, 2],给一个target:0,找到位置
-
最长递增子序列(LeetCode 300)
-
前序遍历+中序遍历构建树,在返回树的右视图
-
树的z字型遍历
-
给定一个字符数组,和一个字符串,在字符串里找到任意一个完全由字符数组组成的子串,字符顺序无所谓
-
给一个数组,建一颗最小高度的二叉树(递归和非递归)
-
反转链表II(LeetCode 92)
-
求从一个树的左边的叶子节点到一个树右边的叶子节点的最短路径
-
分割数组的最大值(LeetCode 410)
-
复原IP地址(LeetCode 93)
-
判断无向图是否存在环路
总结
参加过字节面试的同学应该都知道,字节的面试比较注重基础知识和算法题的考察。
对语言和框架方面的提问相对较少,所以如果想冲字节的朋友,一定要好好准备数据库、计算机基础知识、中间件+算法题。
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。如果在阅读过程中有疑问,请留言讨论,最后祝愿各位顺利拿到心仪的offer.