上周去YY(欢聚时代)面试JAVA工程师,现在回忆一下当时的面试过程,面试问的问题有:
1、常用的集合类
HashMap、HashTable、ArrayList、LinkedList、HashSet
2、HashMap、HashTable的区别
HashMap允许键值为空,HashTable不允许键值为空;HashMap不是线程安全的,HashTable是线程安全的;
其它的地方HashMap与HashTable则完全一样。
3、HashMap的实现原理
数组+链表
4、用于同步的关键字:synchronized、violate
synchronized用于锁定一个类、一个方法或一个代码块
violate用于锁定一个变量,保证变量的值是直接从内存中读取,而不是从缓存中读取。
5、MySQL存储引擎
(1)MyISAM
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
(2)InnoDB
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
(3)memory
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
(4)merge
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。
6、MySQL索引的实现原理
7、说出常用的设计模式,并让我当场写出代码。
这次面试有好些面试题回答不上来,最终被鄙视了,以后通过不断总结,积累面试经验,深入学习各种知识,向更高的平台发起冲锋号!
哥要屡败屡战!