最近的一次Java面试
2018-04-26 本文已影响0人
Destiny_5dcd
一面:
- 给了一段代码有关分布式事务锁的,让找出其中的bug,记不全了,只能大概回忆了一部分,大体意思如下:
@Transactional
public int addXXX(String key, RedisService redis, updateYYYService uYService, saveZZZService sZService, someLogicBean slBean) {
try:
if(redisService.setnx(key, "1") == 0){// 获取分布式事务锁
return 0;
}
sZService.save(slBean);
uYService.update(sZService);
return 1;
catch(Exception e){
log.error("")
return 0;
}finally{
redisService.del(key);
}
}
-
数组和列表相关
2.1 数组和列表的区别
2.2 数组遍历和列表遍历有什么不同
2.3 HashMap的底层实现
2.4 HashMap 的线程安全问题,在什么场景下会出现线程安全问题
2.5 HashSet和HashMap的区别
2.6 ConcurrentHashMap的底层是怎么实现的线程安全
2.7 HashMap内存分配机制是怎样的 -
Redis和memcache相关
3.1 Redis支持的数据类型有哪些
3.2 Redis里Hash和String类型有什么区别
3.3 List的数据怎么获取
3.4 Redis分布式实现
3.5 Redis的内存清理机制
3.6 Redis数据持久化的方式及区别
3.7 SortedSet和TreeMap怎么实现倒叙排列
3.7 memcache的key值有长度限制,怎么解决长度限制问题 -
Mybatis及数据库
4.1 Mybatis中#和$有什么区别,Sql注入问题,为什么仍保留#有什么特别的使用场景。
4.2 Sql优化的几种方式
4.3 什么是最左原则
4.4 数据库连接池的几个参数
4.5 最小连接数的意义
4.6 怎么查看sql索引的使用情况
4.7 MongoDb的使用场景,比较奇怪的几个方法(???) -
Solr
5.1 solr里的like和数据库的like有什么区别
5.2 solr里面数据是怎么存储的
5.3 怎么解决用户在搜索框里输入错别字的问题
二面:
- 登录系统的安全机制怎么设计
- 怎么设计一个对外接口保证接口的高可用性
- OOM的几种情况及怎么排查
- BIO、NIO、NIO2的发展历程
- 分布式系统下怎么解决订单超卖问题
- 前台页面的优化手段