第一次大厂面试,记录一下 电话面试 32min 后半段才想起来开录音 少数不全
1.自我介绍
2.看我简历偏通信,问我自己感觉对Java哪边熟悉,讲一讲,我挑了简单的集合collection,讲了setmaplist等;
3.java中需要处理多线程场景,上述这些数据结构是如何处理多线程安全问题的;我举了HashMap、ConcurrentHashMap例子;
4.其他一些实现多线程安全的机制?答了Synchronized关键字和Lock
5.讲讲Sychronized,修饰代码块、普通方法、静态方法的区别,举了几个例子让我判断是否会出现阻塞block(多个线程去访问不同方法、同个方法等等,记不清了,我答的不好,对于Synchronized底层原理理解不到位)
6.问了lock的知识,我答了一些类似于公平锁、重入锁等知识点;lock本质是乐观还是悲观的?我答悲观的,后面面试官有再cue;
7.问了Sychronized和Lock实现上有哪些区别;答得模棱两可
8.是否了解CAS? CAS是乐观还是悲观? 答乐观,先比较再执行。 追问那Lock是悲观还是乐观? 答 是乐观。
9.讲讲实现锁的另一种方式volatile。简单说了存在直接内存中,线程可见。
10.volatile和Synchronized有什么区别? 想要我回答前者实现可见性,后者实现原子性。
11.了解AQS么 ? 简单答了下虚拟队列概念。
12.了解分布式中的锁么? 不了解。 了解数据库中的锁么? 不了解。
13.聊到了并发编程,想要启动线程有哪些方式。 答了继承Thread和实现Runnable接口,重写run方法,通过start方法启动线程。
14.如果我继承了thread方法,使用的时候直接调用了它的run方会有什么结果? 直接调用run不会创建线程,只有start才建成;
15.Thread也是Runnable的一个实现,这两种方式还有其他的差异么? 没答上来。
16.有没有了解过Callable这种有返回的写法? 没了解。
17.有了解future么? 没有
18.有没有了解过用线程池去创建线程? 答了核心线程数、最大线程数、工作队列,生命时间等,使用线程池的流程(判断是否达到最大线程数等等)。
19.聊一下饱和策略或者说是拒绝策略? 答抛出异常。 可以自定义策略么,不用异常。 答未接触到。
20.了解过线程池中barrier、信号量么? 没有了解过。
21.对分布式场景有没有学习,在互联网架构下一般做一个分布式解决方案涉及到那些,微服务、分布式架构下的中间件这些,介绍一下。 答不会。
22你有什么要问的? 对我的评价。 了解的太浅,建议多做项目,在实践中加深理解。
全部评论
(2) 回帖