快手

后端开发工程师一面面经

完整信息

22 条问法 · 18 道题

本篇目录
被狠狠拷打了 上来先问agent项目和传统后端项目 八股 redis集群部署节点怎么key怎么定位到节点 双副本及单副本节点挂了之后的访问情况 HashMap底层数据结构 如何扩容 那在哈希表里面,它的节点是有序的。如果你遍历的时候,它是有序遍历还是随机遍历?那它排序的规则是什么规则? 怎么计算桶位?如果是自定义的对象呢? 创建线程的话,有几种方式? 做线程间数据同步的话,在 Java 里面该怎么做? 那如果加锁的话,有哪些方式在实现上? 用 synchronized 进行了一个加锁,那你的方法里面,临界区里面它抛出了 OOM 的错误,或者抛出了一个异常,这种情况下它的锁会自动释放,还是说需要手动处理? 首先这个 OOM 它是个什么东?这个是个什么东西?是一个异常吗?那这种错误我们可以捕捉自己处理吗?人工处理。 这个它你可以自己捕捉它,让它不退出吗? 对一个JVM,就对于一个 Java 进程来说,对吧?它的退出条件是什么? 那慢方法,他在慢方法里面创建了一堆线程去干活了,这个时候他慢方法依然会return,他这时候才会退出。还是说你需要慢方法阻塞? 创建的那个 THREAD 对象,你刚才查的那个 THREAD 对象,这种 THREAD 对象,它其实是在 Java 这边是属于虚定位,是虚拟线程,这个虚拟线程和操作系统的线程,它们之间的对应关系是怎样的?是一对一的还是一对多的?还是多对多的? 线程崩掉之后,是整个进程就退出了吗?还是。还是说他会由他的副线程捕获去做一个异常处理? 那在操作系统进行任务调度的时候他操作系统要做什么工作,你了解吗? 调度的时候他要做切换的话,他要完成哪些工作? 如果说他已经确定要进行一个他的任务的切换。他操作系统需要做哪些工作才能完成他的切换? 他的上下文主要包括哪些内容? 为什么要用虚拟内存? 手撕 判断B树是不是A树的子树 总结:感觉问的很深入偏基础,这个手动捕获OOM以及程序的退出条件这完全没看过
本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
    那在哈希表里面,它的节点是有序的。如果你遍历的时候,它是有序遍历还是随机遍历?那它排序的规则是什么规则?
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
    用 synchronized 进行了一个加锁,那你的方法里面,临界区里面它抛出了 OOM 的错误,或者抛出了一个异常,这种情况下它的锁会自动释放,还是说需要手动处理?
  11. 11
    首先这个 OOM 它是个什么东?这个是个什么东西?是一个异常吗?那这种错误我们可以捕捉自己处理吗?人工处理。
  12. 12
  13. 13
  14. 14
    那慢方法,他在慢方法里面创建了一堆线程去干活了,这个时候他慢方法依然会return,他这时候才会退出。还是说你需要慢方法阻塞?
  15. 15
    创建的那个 THREAD 对象,你刚才查的那个 THREAD 对象,这种 THREAD 对象,它其实是在 Java 这边是属于虚定位,是虚拟线程,这个虚拟线程和操作系统的线程,它们之间的对应关系是怎样的?是一对一的还是一对多的?还是多对多的?
  16. 16
    线程崩掉之后,是整个进程就退出了吗?还是。还是说他会由他的副线程捕获去做一个异常处理?
  17. 17
    那在操作系统进行任务调度的时候他操作系统要做什么工作,你了解吗?
  18. 18
  19. 19
    如果说他已经确定要进行一个他的任务的切换。他操作系统需要做哪些工作才能完成他的切换?
  20. 20
  21. 21
  22. 22

相关公司