面试问题总结--2018年6月
在与一位面试官沟通的时候, 我问了一个问题, 技术更新如此的快, 您是如何知道当前市场上流行的技术或者框架? 如何才能不断的更新自己的知识库呢? 他说, 无论你是否想要换工作, 都准备好, 每年来一次面试. 在与面试官交谈的过程中, 你就了解了当前市场的需求, 现在都在使用什么新技术了, 以及自己和市场的比薄弱点在哪里, 然后整理自己的知识库, 不断学习。
与另外一个面试官沟通的时候, 他说:在任何一家公司, 在任何一个项目里, 都不要只是看到项目是如何实现的, 要知道为什么要这样实现?有没有其他更好的办法?这样做的好处在哪里?要想到如何把问题抽象出来。站在一个更高的角度去看事物。例如: 我们都知道后端有mvc三层架构, 那么前端可不可以也用三层架构呢? 什么样的设计会使得代码更优雅, 怎样设计才更好?要经常去思考,自己可以写一个简单的实现。
在一个,现在研究知识点的时候, 不要试图从头到尾把整门技术都看一遍, 浪费时间, 也没有必要, 你看到总是你已经会的部分. 直接去研究,了解你不知道的部分. 比如spring. spring天天用, 可是他的aop原理却不一定很了解, 那么就直接研究aop.
下面是这次面试,面试官经常会问到的问题
------------------------------------------------------------------------
计算机基础
1. tcp和udp, http有什么区别?
------------------------------------------------------------------------
java篇
和以前面试相比, 现在的考点更多的是底层的实现,更深入的问题。
1. HashMap的原理. 底层怎么实现的? (用画图的方式了解HashMap的底层, 并了解各个方法的实现)
相关的, concurrentHashMap是如何实现的?
2. spring aop是如何实现的? aop在spring中的应用.
上面这两个问题是问高级必问的两个问题. 必须搞清楚, 弄明白.
----------------------------------------
3. equals方法底层是如何比较两个string对象是否相等的.
4. Lock和Synchronized有什么区别? Lock里面有哪些方法? tryLock方法使用过么? 既然有了synchronized, 为什么又会有Lock的出现呢?
5. ArrayList底层实现原理是什么?
6. wait,notify与conditioin有什么区别?
7. spring 前置通知,后置通知是如何配置的?
8. dubbo有没有用过?
9. 微服务有了解过么? spring boot, spring cloud, spring security.
10. 数据库权限设置, 用的什么框架, 现在市面流行的shiro权限验证框架, 为什么不用呢?
11. Object是所有类的父类, 他都有哪些方法?
12. spring 中一个bean的生命周期是怎样的?
13. spring拦截器研究过吧, 那么spring拦截器是在什么时候被加载的?这就是问spring的架构, 初始化加载的顺序了。
14. 定义一个数组, 模拟快排算法的实现?
15. 如何理解设计模式, 说说原型设计模式。这就要求你把23种设计模式都有很熟悉。
16. springMVC工作原理
17. treeMap的数据结构及实现原理
18. redis雪崩.
19. nio和bio的区别? 重点研究一下nio. nio的性能比io要高很多
20. 为什么重写equals? 重写equals时通常也会重写hashcode()方法, 为什么?
https://www.cnblogs.com/yuanblog/p/4441017.html
21. JVM虚拟机的构成, 垃圾回收机制. 垃圾回收的算法有哪些, 什么时候使用?
这个就把JVM虚拟机整体看一遍。这块问题其实都不太深, 把基础看一遍, 基本能过。ThreadLoc
22. ThreadLocal用过么? 如果线程下有一个子线程, 是否可以保证主线程和子线程变量共享?
23. Spring事物的几种方式以及区别
24. redis实现分布式锁
------------------------------------------------------------------------------
数据库篇
从来没有系统的学习数据。 其实有必要系统的学习学习数据库。 当然不是简单的增删改查。 更多的是学习数据库的深入知识, 索引, 事物隔离级别,数据库底层实现等等。
1. 数据库索引的原理
2. 数据库事物的隔离级别
3. 加上索引, 查询效率为什么快了
4. 索引多了, 修改和新增为什么就慢了?
5. 数据库的负载均衡?
6. 如何知道设置的索引是否生效? 通过explain 查询.
7. explain查询出来的数据, 你都关注哪些列?这个考点是如何分析
参考文章: https://blog.csdn.net/u014470581/article/details/68065590
8. 当有海量数据请求书, mysql查询速度特别慢, 如何找到特别慢的语句?
mysql慢日志查询: https://blog.csdn.net/timchen525/article/details/75268151
9. 索引的类型。
普通索引 .唯一索引 .主键索引 .组合索引 .全文索引
10. 哪些操作会使索引失效?
---------------------------------------------------------------------------------
Linux篇
1. 常用的linux命令有哪些
2. 如何查询一个很大的文件里, 某一个指定的内容?
---------------------------------------------------------------------------------
Hadoop篇
1. reduce有10个, 每个reduce中的数据大概有10G, 已从小到大排好序. 如何将10个reduce合并为一个reduce?算法怎么写?
这里使用的是多路归并算法: https://blog.csdn.net/yuehailin/article/details/68961304
2. Hadoop的Shuffle过程描述一下.
![](https://img2020.cnblogs.com/blog/1187916/202106/1187916-20210627082053046-596566365.jpg)