1. 个人背景介绍
本人19年毕业,双非硕士,软件工程专业,1年工作经验(银行外围系统,又老又久,无高并发场景)Java后端开发,无实习经历,通过BOSS找的字节猎头。
刚开始说是被飞书拒绝了,然后被教育捞起来了。
2. 一面
时间:9月24日 1小时
很基础的知识点考察,涵盖了IO,网络等基本的理论知识,数据库和多线程会结合个人的语言和使用过的软件框架做提问,一面很基础,基本都答上来
hashmap原理,底层实现,线程不安全的原因,怎么扩容,底层数组大小为什么是2^n,扩容死锁产生的过程(不会), 1.7和1.8的区别
concurrenthashmap原理,结构,为什么线程安全,分段锁怎么实现
synchronized和lock区别, volatile原理了解吗
Lock底层实现原理, AQS怎么实现的
Redis数据类型,删除策略,持久化方案,分布式方案,redis cluster方案原理(没看具体的架构内容),分布式一致hash知道吗?
IO模型:IO模型有哪些,select和epoll原理,select的缺点(搞Java,如果没有高并发场景的经历,IO这块也就不怎么了解了,基本都是复习多线程的知识去了)
OSI模型(五层和七层)
介绍下tcp和udp
tcp握手,挥手
慢启动,快速重传,开苏恢复
time-wait介绍下
innodb特点
innodb索引物理结构
主键,回表,覆盖索引
与MyISAM对比
算法:三数之和,要求给出时间复杂度和空间复杂度,刚开始暴力三重循环,后来要求优化
3. 二面
时间:9月31日 1小时
结合项目经历提问,面试官会结合简历和一面结果适当补充一些基本理论知识和常用框架的提问,个人对kafka不太了解,可能面试官不太满意
项目经历:分库分表,不借助中间件怎么实现,MyCat了解过吗(不了解),分库和分表怎么选择?结合项目场景讨论划分规则
其他 项目经历,反射、注解的原理,有用过线程池吗?Java线程池有哪几种?Java线程池的构造参数?什么是阻塞队列?Java有哪些阻塞队列?
https建立连接的过程是怎样的?
了解中间人攻击和跨域攻击吗?
进程与线程的区别和联系
进程的切换发生了什么
线程的切换为什么比进程的切换代价小
进程通信的方式和举例
kafka的产生背景和在项目中的使用
topic和partition,partition是干什么的
Consumer Group是干什么的
怎么将partition分配到多个broker上?怎么动态调整partition和broker的数量?
rebalance什么时候发生,rebalance过程(这个真不知道)
Linux的shell用的怎么样?grep、sed、awk有用过吗?(只会grep...)
怎么监控机器性能?
Linux文件系统了解吗?软连接和硬连接?
矩阵顺时针旋转90°和逆时针旋转90° 股票买卖(几个变种问题没做出来,但是基本的应该还行)
4. 三面
时间:10月9日 1小时
主要是系统设计,发散性问题, 另外,面试官吐槽了我的简历,建议简历老老实实套模板,不要花里胡哨,程序员的简历要整洁明了
kafka如何做到高可用(不会,面试官不太满意,因为我的工作经历没有互联网高并发,而且kafka的确没怎么看)
设计热榜,动态展示top K
N个线程交替打印,怎么实现,写出来,跑一下
设计长短地址转换
由于文章内容太长,在这里就不展示答案了,想要获取完整版的面试题以及答案,转发并关注作者,简信作者回复】【面试题】免费获取。
网友评论