1、Java集合类:List,Set,Hash
2、ArrayList和LinkList的底层区别
3、ArrayList扩容1.5倍,LinkList没有扩容机制,直接往后添加就好。
4、List迭代的方式有哪些?for循环,foreach(底层还是迭代器),迭代器。
5、List遍历的时候删除,会引发ConcurrentModifictionException。使用iterator.remove()方法删除。
6、多线程遍历List,使用synchronized保证线程安全性。
7、synchronized的底层:指令monitorenter和minitorexit。
8、除了synchronized还有lock进行同步操作。Reentrantlock可重入锁
9、Lock锁未拿到锁的线程进入阻塞队列。为什么是双向队列?非公平策略如何实现?
10、多线程使用的场景。
11、分布式锁:没接触过。
12、Mysql的存储引擎:MyISAM和InnoDB。两者的区别。
13、能否用性别作为索引?不行,区分度不高。
14、为什么用B+树?树更加矮胖,减小磁盘IO次数。数据存储在同一行的叶子结点,遍历,范围查询都十分方便。
15、InnoDB的存储方式:聚簇索引。聚簇索引的特点。非主键查询会引发回表操作。避免回表:覆盖索引。
16、MySQL慢查询:不了解。
面试下来总体难度并不大,可能自己第一次面试稍微有点兴奋,类似多线程高并发的地方,虽然自己知道,但是感觉并没有说清楚。还是要多面几家,提高自己的表达能力,有时候并不是答的越快越好,反而等面试官提出问题后,自己思考一段时间,理清思路,准备好要讲的内容,慢条斯理的说起来,会更有逻辑,别人会更能理解自己说的内容,不然听起来会很乱。还是要加油呀~
全部评论
(1) 回帖