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