字节电商后端Java面经
一面
#Java#
项目,online judge系统,结合业务说说具体怎么优化的,如果百万人同时提交题目应该怎么优化。
算法,求平方根,如果参数接近int怎么办,如果是double类型且精度要求0.01怎么办,如果参数是小于1的数怎么办。
Java,hashmap底层数据结构,为什么要用红黑树不用二叉平衡树,怎么扩容的,线程安全吗,currerenthashmap线程安全怎么实现的。
乐观锁和悲观锁,各自适用场景。
tcp和udp区别,tcp怎么保证数据包一定到达,超时重传有次数限制吗。
http和https区别,https过程。
innodb引擎特点,行锁可能导致死锁吗,如何避免
innodb为什么用b+树,不用b树和二叉树。
二面
项目相关,online judge,评测机有没有用到什么架构,项目有几个人,在其中负责哪部分,登录怎么实现一周内不用重复登录,token怎么实现的,为什么不用cookie和session,分布式session怎么解决。
数据库,oj项目problem表有哪些字段,索引有什么用,为什么用b+数,b+数和b数有什么区别,事务的四个特性,事务怎么实现回滚,MySQL慢查询怎么排查,有哪些工具分析性能,binlog了解过吗,char和varchar区别。
算法 leetcode135分糖果进阶版,增加限制,如果相邻两人得分相同,要求分到的糖果一定相同。
场景题,秒杀场景,怎么解决瞬间高并发问题,怎么扣库存,库存数据保存在哪,有没有操作库存前不加锁的方法,面对大流量怎么解决,完成秒杀需要哪些表。
三面
三面上来先问了你自己觉得自己有哪些牛逼的地方,不局限于技术方面。有点猝不及防,面试官引导说比如数学很好。刚好考研的时候数学还不错,就说数学挺好的,然后问了些高数,数理统计,线代问题。极大似然估计干什么的,怎么用,矩阵的秩怎么理解,概率密度函数怎么理解,概率密度函数积分是多少。然后又问了几个spring问题,基本就是ioc,aop那些,答得不好。最后做了一个代码题,居然是算矩阵转置,也是万万没想到。
总体来说,一二面问的问题都挺常规,答得也可以,面试官也不错,会根据你的回答来往下聊。一二面的算法题做的时候也有被绊住的地方,最后还好都通过了。三面属实有点意外,先是问了一些高数,最后做了个矩阵转置。最后反问的时候,问了下技术栈,面试官也是草草回了两句,目测凉凉了。