分享下最近面试二十多家公司总结的java高级面试题

目录java

前言:mysql

正题:git

一:jvm内存模型以及调优篇程序员

二:java基础篇github

三:多线程并发篇面试

四:mysql以及nosql相关redis

五:消息队列篇算法

六:场景篇sql


前言:

2019年对于我而言是个很是有意义的一年,首先在今年的4月份,毅然离开了待了四年的公司。离开的缘由也是有不少,更多的仍是我的将来的发展问题。离职后,给本身安排了一个计划,在图书馆泡了一个月。一呢是为了对下份工做的一个面试准备,二呢也是借此机会把一些以前不懂的或者不深刻的好好的学习了一遍。mongodb

给你们特别推荐一个学习图谱,里面从java基础到深刻都总结概括的很好,也是一个学习很不错的学习路线。

https://github.com/xingshaocheng/architect-awesome

2019年绝对是一个大环境很是很差一年,不少公司都进行了大规模的裁人或者小公司的一个倒闭。所以求职者是很是多的。

因此诶,若是你如今在找工做可不要太乐观!除非你的背景特别好~

听hr讲的是 一个求职岗位不须要一天就收到了几百封简历,所以若是你如今正准备跳槽,须要最好心理准备,或者考虑再等等

同时给你们推荐【脉脉】俗称程序员社区,里面的匿名区值得你们一块儿沟通交流。

 

正题:

从五月份开始面试,断断续续面试了有将近二十家(并非没有面试机会,是由于不少本身的事情须要处理哈),首先我目前作java作了六年,总结出这么多家问的问题都大同小异,也是看面试官的水平。有些面试官技术确实是很厉害的,就问你简历上的东西,从浅至深。也有些很是水的面试官,从他问的第一个问题,你就能看出这个面试官一个真实的水平。因此若是遇到了很水的面试官,就大胆说就好了。有可能面试官本身都不知道答案是什么。

 

最近都面试的公司具体都有哪些我就不说了,他们都有个共同点,就是java基础和并发这块都很是重视。

 

如下我是根据功能模块进行划分的,可是面试官确定不是这样问的,大多数仍是一问到底,会设计到多个模块

下面的面试题会持续更新,由于时间都比较久了,不少问题一时半会想不起了,等想到的时候再进行补充~

 

一:jvm内存模型以及调优篇

  1. jvm内存模型这块有了解吗?讲讲你的理解

  2. 堆外内存是存放在哪的,受不受jvm堆内存大小的限制

  3. cms和g1的区别
  4. gc的触发机制是什么
  5. 新生代使用什么收集器
  6. 直接内存主要是存放什么的
  7. 各个收集算法的优缺点
  8. jvm是怎么肯定一个对象是否可达
  9. java对象有哪几种引用?每种引用的生命周期是什么样的
  10. 若是线上出现了oom,你是怎么进行排查的(主要考察jps、jstack、jstat、jmap)
  11. 栈溢出(StackOverflowError)在什么状况下会出现,若是解决
  12. 使用什么命令调整栈内存的大小

 

二:java基础篇

  1. HashMap的底层原理(1.8与1.7的区别必需要说出来)
  2. HashMap是线程不安全的,并发场景下会出现什么问题
  3. 遍历HashMap的几种方式,那种更快
  4. HashMap的扩容是如何实现的
  5. CounrrentHashmap的底层实现原理,是若是实现安全的
  6. 计算CounrrentHashmap的size底层是什么样的
  7. HashTable与CounrrentHashmap的区别
  8. HashSet与Treeset的区别
  9. List若是实现排序
  10. String为何是final的
  11. String在内存中是如何存放的
  12. 设计模式相关(重要,单例就算了...烂大街了)
  13. 静态变量、静态代码块、代码块、构造函数。在类加载时,他们的执行顺序
  14. volatile 变量是什么?volatile 变量和 atomic 变量有什么不一样
  15. switch能做用在string和long上吗
  16. hashmap、treemap的区别
  17. set的元素是不能重复的,那么是怎么判断一个元素是否重复呢?
  18. io与nio的区别是什么
  19. 简述hash的一致性

 

 

 

 

三:多线程并发篇

  1. java中都有什么锁
  2. synchronize与Lock的区别
  3. synchronize与Lock谁更快?
  4. 讲讲ReentrantLock这块你的理解
  5. 什么是可重入锁?有什么前提条件
  6. Lock的锁是怎么实现的
  7. Lock的公平和非公平
  8. 多线程有几种建立方式
  9. java的线程池有几种
  10. 线程池的execute和submit的区别
  11. 线程池有哪几个参数,每一个参数表明什么意思
  12. 线程池的拒绝策略有哪些,分别是什么
  13. 线程池能够设置哪几个阻塞队列
  14. 线程池底层是如何实现的,线程执行完毕是如何唤醒等待线程的
  15. AQS是如何保证线程安全的
  16. 谈谈你对Threadlocal的理解
  17. Threadlocal使用完以后须要清理吗?为何
  18. 多线程之间若是保证数据的共享以及一致性
  19. CAS是什么、会出现ABA的问题,如何解决
  20. shutdown和shutdown的区别
  21. 多线程中,run和start的区别
  22. Semaphore信号量的原理
  23. countlatchdown使用过没,在什么状况下使用

 

四:mysql以及nosql相关

  1. mysql中都有什么锁
  2. 何时会使用到行锁、何时使用到表锁
  3. mysql索引的数据结构是什么样的?
  4. 若是让你设计一个表,你会怎么设计?注重哪几个点
  5. myisam和innodb的区别
  6. 聚合索引与非聚合索引的区别
  7. 都作过什么sql优化
  8. mysql能够不设置索引吗?为何
  9. mysql的特性都有哪些
  10. mysql的隔离级别都有哪些、默认是哪一个
  11. ACID是什么
  12. 可重复读会致使幻读吗
  13. redis都支持什么数据类型
  14. redis有哪几种持久化方式,都有什么优缺点
  15. redis的哨兵与集群模式你来说讲
  16. 用过度布式锁吗?他是怎么实现的
  17. 什么是缓存穿透、缓存雪崩、如何避免
  18. redis有哪几种淘汰策略
  19. reids过时数据,是如何删除的
  20. redis是单线程的,为何还那么快
  21. redis是如何存储数据的、说说你对哈希槽的理解
  22. redis和mongodb的区别
  23. mongodb也有索引,他的底层数据结构是什么样的
  24. mongodb为什么那么快
  25. mongo的分片是如何实现的

 

五:消息队列篇

  1. rabbitmq若是保证了消息的可靠性
  2. 如何保证生产者把消息发送到rabbitmq
  3. 若是保证消费者消费了消息
  4. 如何避免消息从新投递或重复消费
  5. 使用mq的好处
  6. rabbitmq消息是如何进行分发的
  7. rabbitmq若是作失败重试的
  8. rabbitmq死信的理解
  9. 探探你对kafka的理解
  10. kafka若是保证了消息的可靠性
  11. kafka数据传输的事物定义有哪几种
  12. kafka的消息是有序的吗
  13. kafka是如何消费消息的
  14. 若是kafka中一个broker崩掉了,内部都作了什么是事
  15. kafka如何保证了消息的不丢失

 

六:场景篇

  1. 有一个高并发抢购活动,你如何对这个进行系统设计
  2. 有个100G的ip登录信息,如今只有十台台服务器4G的,需找出ip访问最多前十名的ip
  3. 如今生产出现了oom,你是若是进行排查的
  4. 经分析,线上有线程出现了死锁,请问你如何进行排查
  5. 现mysql常常报错死锁超时异常,问你如何进行解决
  6. 现有一条sql,每次执行耗时500ms,我须要将这个耗时保证在100ms如下,你会从哪几个纬度去分析
相关文章
相关标签/搜索