帆软软件秋招面经


帆软面经

timeline

提前批

7.25 官网投递

7.30 笔试

8.8 一面 8.12 二面 8.14 三面 8.16 附加笔试+加面 8.19 oc

这下真一周走完所有流程了

一面

时长:70min

面试官微胖,全程笑呵呵的,每回答一个问题,面试官会回复“没问题”或者告诉你正确答案,面试体验极佳

  1. 项目深挖(其实也没什么能深挖的)

  2. IO密集型任务,线程池参数怎么设计的?

  3. redis和mysql一致性?

  4. redis的zset底层实现?为什么用跳表不用红黑树?

  5. redis是多线程的?

  6. redis为什么单线程还这么快?有没有什么技术来提升IO性能?

  7. 缓存穿透?布隆过滤器的原理?哈希碰撞怎么解决?

  8. Spring的AOP使用场景?实现原理?

  9. Cookie和Session的区别?

  10. 对多态的理解?JVM怎么通过父类类型调用到子类对象的方法的?(不会,面试官说静态绑定和动态绑定)

  11. 场景:多线程下,读多写少的list?底层原理?什么缺点?

  12. ConcurrentHashMap为什么不能有null?怎么保证线程安全的?如果在扩容同时put会发生什么?(不会)

  13. 了解过/用过什么设计模式?用过模板方法模式吗?策略模式?

  14. 线程同步?答:信号量、wait/notify、CountDownLatch

    追问:有没有什么优雅的实现方式?答:CompletableFuture

    面试官笑了:那你还是知道的

  15. volatile关键字作用?还有什么方法保证可见性?

  16. ReentrantLock源码?调用lock()方法内部是怎么实现的?公平锁和非公平锁的底层实现差距?

  17. Mysql索引数据类型?为什么用B+树不用红黑树?

  18. Mysql默认的事务隔离级别?怎么防止幻读?

  19. 双亲委派模型的好处是什么?可以破坏吗?什么例子破坏了双亲委派模型?

  20. 场景:假如一个Tomcat单体应用,用户反馈无法访问,排查思路?假设是CPU飙升,怎么排查?

  21. 算法题只说思路:1000个1-99之间的数字,假设一个数字出现超过了500次,怎么找到?

  22. 怎么学习新技术的?博客平台?

  23. 反问:什么时候给结果?

    面试官:三个工作日内,但是我会帮你催一下下一轮的面试官

二面

时长:45min

  1. 项目难点

  2. 操作系统里面对锁的理解?

  3. 操作系统里面常用的锁类型?悲观锁和乐观锁的区别是什么?

  4. 互斥锁和自旋锁了解过吗?有了解过这两种锁的开销吗?
  5. 有了解过缓存吗?能讲一讲你在操作系统或者其他场景下了解到的缓存吗?
  6. 局部性原理有了解过吗?预读失效了解吗?怎么处理预读失效?
  7. 有了解过缓存失效吗?
  8. 讲一下你对索引的理解吧,举一些索引的例子?
  9. 讲一下你对数据库事务的了解。
  10. 你刚才提到了C(一致性)是目的,那么如果满足了原子性,什么情况下会导致不一致的问题?
  11. 对于隔离性,MySQL有哪些隔离级别?重点讲一下可重复读?
  12. 你提到了可重复读不能完全防止幻读,能举一个例子吗?
  13. 怎么判断一个数是2的n次方?(面试官想听位运算的方法,最后说了5种方法)
  14. LC136:一个数组中,一个数只出现1次,其他的数都出现2次,怎么找到只出现1次的数?
  15. LC260:一个数组中,两个数只出现1次,其他的数都出现2次,怎么找到只出现1次的数?
  16. LC137:一个数组中,一个数只出现1次,其他的数都出现3次,怎么找到只出现1次的数?
  17. 10亿个URL中怎么找到出现次数最多的20个?
  18. 面试官吐槽:我也是南京大学的,看你本科成绩这么好为什么保研到南大?为什么不冲更好的学校?
  19. 反问

面试官问的力扣题全都做过,但是不要表现出来做过,不然面试官换题就小丑了

另一方面,面试官也会引导你,顺着面试官的提示一点一点说出来,又能显示自己学习能力强又能提高面试官的体验

三面

时长:45min

  1. 一面的时候问过CopyOnWriteList,它的加锁机制怎么设计的?跟直接加读写锁有什么差别?
  2. 还是CopyOnWriteList,假设它最开始是[1,2,3],如果有两个线程,线程A在遍历打印这个List,在打印完2的时候,线程B把这个list改成了[4,5,6],那么最后线程A打印出来的结果是[1,2,6]还是[1,2,3]?
  3. 假设上面的List,只有一个线程,它先获取了这个List的Iterator,再修改了这个List,那么原来获取到了Iterator是指向原数组还是新数组?
  4. CopyOnWriteList这样设计的缺点是什么?
  5. 开放题:基于CopyOnWriteList,假设我在读写都很多的场景,又想用一个线程安全的List,怎么设计或者怎么修改?(答了批量写,读写锁和参考数据库事务的加锁方式,但是数据库那种加锁方法无论是实现成本还是性能都很差,只能说个思路吧,毕竟如果这种list好设计java早就给你做好了)
  6. HashMap的扩容过程了解吗?多线程的场景下HashMap的死循环是怎么形成的?(面试官让把这个过程完整的说出来,面试官会按照你的说法画图,指挥面试官画图说明白这个过程)
  7. 最近有在看什么书吗?
  8. 说一下G1和ZGC的区别?ZGC主要解决了什么问题?
  9. 后续有什么学习路径规划吗?
  10. 假设让你给大一新生推荐新书你推荐什么?(王道考研408)
  11. 大学过程中有跟其他人一起做项目的经验吗?如果遇到冲突你是怎么解决的?
  12. 大学里面压力最大的经历?怎么适应的?
  13. 怎么看待国庆和私企的区别?
  14. 你对帆软的了解?
  15. 自己身边比较佩服的一个人?什么方面比较佩服?
  16. 期望工作地点?
  17. 反问

四面

时长:20min

主要就两个问题:

  1. 假设两个部门,比如一个后端 一个前端,两个部门都有一个很强的员工,在绩效考核的时候肯定要分个排名,那你觉得哪些方面可以作为评价标准?
  2. 假设有测试期测不出来的bug,比如刁钻的用例,比如进程把系统干崩了,那你怎么避免这种问题?怎么定位这种问题?(答了全量日志和集群处理,面试官说你的回答听起来给我一种很有经验的感觉,笑死,有个p经验)

文章作者: 山川大海
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 山川大海 !
  目录