最近的一次Java面试

2018-04-26  本文已影响0人  Destiny_5dcd

一面:

  1. 给了一段代码有关分布式事务锁的,让找出其中的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);
  }
}
  1. 数组和列表相关
    2.1 数组和列表的区别
    2.2 数组遍历和列表遍历有什么不同
    2.3 HashMap的底层实现
    2.4 HashMap 的线程安全问题,在什么场景下会出现线程安全问题
    2.5 HashSet和HashMap的区别
    2.6 ConcurrentHashMap的底层是怎么实现的线程安全
    2.7 HashMap内存分配机制是怎样的

  2. 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值有长度限制,怎么解决长度限制问题

  3. Mybatis及数据库
    4.1 Mybatis中#和$有什么区别,Sql注入问题,为什么仍保留#有什么特别的使用场景。
    4.2 Sql优化的几种方式
    4.3 什么是最左原则
    4.4 数据库连接池的几个参数
    4.5 最小连接数的意义
    4.6 怎么查看sql索引的使用情况
    4.7 MongoDb的使用场景,比较奇怪的几个方法(???)

  4. Solr
    5.1 solr里的like和数据库的like有什么区别
    5.2 solr里面数据是怎么存储的
    5.3 怎么解决用户在搜索框里输入错别字的问题

二面:

  1. 登录系统的安全机制怎么设计
  2. 怎么设计一个对外接口保证接口的高可用性
  3. OOM的几种情况及怎么排查
  4. BIO、NIO、NIO2的发展历程
  5. 分布式系统下怎么解决订单超卖问题
  6. 前台页面的优化手段
上一篇下一篇

猜你喜欢

热点阅读