Java面试常问知识点

Java面试常问知识点

    • Spring相关
    • 数据结构相关
    • 多线程
    • JVM
    • 计算机网络相关
    • 其他

写在前面:
先声明下,这个面试专题,主要是写给自己的,用来在挤公交的时候学习下,顺便做个分享。。。 我就是个小菜鸡。

Spring相关

  1. SpringMVC的工作原理

MVC一共可以分为3个部分:

Modle层:是内部数据模型;里面最关键的是manager,做业务的逻辑层
Controller层:请求的分发控制层;核心是service控制层:用来对业务进行编排,即将大业务拆分成细小粒度的小业务
View层:视图展示层,就是我们浏览器能够看到的页面,主要用于页面渲染

具体工作流程:

第1步:浏览器发送指定的请求都会交给DispatcherServlet。
第2步:DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller,并将请求交给目标Controller
第3步:目标Controller处理完业务后,返回一个ModelAndView给DispatcherServlet
第4步:DispatcherServlet通过ViewResolver视图解析器找到对应的视图对象View
第5步:视图对象View负责渲染,并返回到浏览器

下面的链接讲解的很详细。
MVC工作原理
2. IOC和AOP的理解

IOC是控制反转,表面上可以理解为将生成和摧毁对象的权力,从程序员手中转交给了我Spring框架,利用了Java的反射机制,在java运行时,可以根据类名生成对象,调用对象的参数,方法等。
AOP是面向切面编程,它是用来处理对业务无关,但是却对多个对象产生影响的公共行为,将其封装为一个模块,例如常用的日志处理,单点登录,授权验证等模块。

还需要考察JDK的动态代理和CGLIB的动态代理的区别:最主要的是一个是接口,一个是类。
3. 常用的设计模式
4. Bean的作用域和生命周期(主要是生命周期)
5. 事务隔离级别
6. 事务传播行为
7. 在SpringBoot中使用过的注释

数据结构相关

  1. ArrayList和LinkedList的异同
  2. HashMap的底层实现(所有的HashMap都要考虑1.7和1.8)
  3. HashMap什么时候扩容,怎么扩容
  4. 长度为什么是2的幂次方
  5. HashMap中的链表为什么改成尾插
  6. ConcurrentHashMap的底层实现(1.7和1.8)

多线程

  1. 悲观锁和乐观锁
  2. synchronized和ReenTrantLock的区别
  3. volatile和synchronized的泣别
  4. 可重入锁和不可重入锁的区别
  5. 线程池的参数
  6. 线程池的类型
  7. synchronized的底层原理,JDK1.6后底层优化,和ReenTrantLock的对比
  8. AQS原理
  9. ReentrantLock的底层原理

JVM

  1. 内存区域
  2. 垃圾回收算法
  3. 垃圾收集器
  4. jvm内存管理
  5. jvm调优有没有用过

计算机网络相关

  1. Web请求页面的过程
  2. cookie、session和token
  3. TCP和UDP的区别
  4. TCP三次握手和四次挥手的过程和原因
  5. TCP如何实现可靠传输
  6. 常见的HTTP状态码
  7. HTTPS和HTTP的区别
  8. HTTP的首部都有什么
  9. get和post的区别

其他

其他的问题主要是根据简历上的项目和技能来提问的:例如我的会有雪花算法问题,redis,MySQL,还有简单的Linux和Git命令。手写LRU算法
其中Redis和MySQL是重点的,尤其是大厂特别喜欢考这个。

: 这里的答案在未来的博客中会进行详细的说明。

你可能感兴趣的:(面试)