菜鸟&Bigo-Java后端开发面经——许愿意向!
阿里巴巴菜鸟-仓储 研发工程师Java
一面 2021.08.19(20:30-21:20)
一、自我介绍
二、项目
项目背景、开发工具
mysql数据库如何设计
索引如何设计
ES等搜索引擎有无了解
协议:http协议、json格式
有无用过后端其他协议(RPC框架)
三、mysql
索引分类、结构、特点:主键非主键、联合索引,最左前缀,索引查询流程
隔离级别:每个隔离级别下事务的访问权限,更新的过程redolog、binlog
四、中间件、消息队列
redis适用场景:基于内存、单线程、热点缓存、持久化、分布式锁
redis数据类型:hash、list、string、set、zset
集群:哨兵、主从
五 、RPC框架
dubbo等
二面 2021.08.30(7:30-20:25)
一、项目经历:难点、解决思路+过程+结果
-
JVM调优、内存泄漏/溢出排查及原因(dump跟踪堆栈)
-
mysql索引设计、优化(结合项目实际进行说明)
-
分布式/线程安全
-
设计一个分布式服务架构,考虑哪些问题
-
任务分发(负载均衡:多服务器性能差异小:轮询/随机轮询、性能差异大:源地址哈希/加权轮询、最小连接数)
-
任务处理(资源调度、崩溃重启、数据一致性/备份还原、同步/异步:多任务协同执行,中间某环出问题怎么办)
-
处理结果(日志管理等)
-
用啥协议(RPC框架springcloud、dubbo、消息中间件rabbitMq、kafka)
-
-
二、设计模式
-
单例(双重锁校验、volatile可见性有序性不保证原子性指令屏障禁止重排序、synchronized可见性有序性原子性作用域)
-
代理(动态代理、拦截器)
-
适配器
-
工厂方法、抽象工厂(统一管理、遵循开闭原则)
三、计网
-
TCP、UDP
-
三次握手
-
2次(服务器打开过多端口)和4次(不需要)不行原因
-
连接异常、断开的结果
-
-
-
HTTP、HTTPS
-
二者区别
-
https实现细节
-
http不同版本区别
-
各种状态码含义
-
四、OS
-
进程、线程
-
通信方式(管道、命名管道、信号量、共享内存、)
-
I/O(异步同步、多路复用I/O,非阻塞)
三面 2021.08.30(7:30-20:25)
一、自我介绍
二、实习内容、收获
三、看什么书
四、八股文
-
线程池
-
数据结构
-
栈、队列
-
循环链表
-
B+树
-
五、哪些offer怎么选、杭州如何?
Bigo后台开发工程师(Java)-IMO【2022届校招】
一面(2021.8.30 10:30-11:30)
一、自我介绍
二、项目
-
权限模型
-
设计模式:手写单例、项目中如何使用适配器模式
......
剩下的问题忘了
三、八股文
-
mysql设计、索引
四、算法
-
手撕快排
五、场景
-
100M文件如何读到仅10M的内存(流式读写
二面(2021.9.6 19:30-20:35)
一、自我介绍
二、场景题
-
微信电脑登录流程
-
微信第三方登录认证流程
-
OAuth2.0如何保证安全
三、八股文
-
TCP三次握手四次挥手
-
Java原子类实现
-
volatile原理
-
redis持久化策略
-
aof造成的主进程阻塞如何解决
......
四、算法
-
分析TopK问题最合适的数据结构和最好最坏时间复杂度
-
调整数组至符合小根堆特性
三面(2021.9.9 16:30-17:35)
一、自我介绍
二、场景题
-
如何使用用户输入的关键词进行搜索
-
如何评判一个系统的性能(分层次论述)
-
性能优化(数字量化指标)
-
mysql索引优化
三、算法
-
寻找有序数组缺失的元素(一次遍历、二分)
-
将长度2n的数组划分为长度2个为n的数组并使得两数组元素和的差绝对值最小(回溯、动规)