最近的一次Java面试

一面:

  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. 前台页面的优化手段
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容