面试官人挺好的,先从基础开始。1、Java基础类型2、String s = new String("s")创建了几个对象3、String是可变的吗,底层怎么实现,为什么是不可变的,有哪些好处?4、String有concat和substring方法,如果我一直调用会产生很多新的对象,Java中有没有什么解决办法?5、StringBuilder和StringBuffer有啥区别?6、线程的生命周期7、创建线程有哪几种方法?8、讲讲synchronized关键字9、synchronized关键字修饰不同的地方,是哪些对象获得锁10、synchronized底层原理11、Java 1.6后的synchronized有哪些优化(好像是这么问的吧)12、ReentrantLock和synchronized区别13、分别适用什么场景14、线程池原理讲一下,就是触发条件15、线程池创建参数16、拒绝策略有哪些17、有一个并发量很高的场景,如何设计线程池18、线程池常见的阻塞队列19、给了一个SQL语句,select * from student where age = 13 order by descoffset 100000 limit 10 问这个语句有什么问题20、获取10条数据要处理10000010条数据,怎么解决?21、这里有个解决方案让写sql语句了22、redis缓存三兄弟,如何解决手撕代码二叉树的层序遍历