苏小研笔试相关知识点

2017-10-27  本文已影响0人  ZYJ2016

1. 设计模式

面试相关设计模式总结:设计模式


2. JVM GC

JVM的常问内容:

详细内容单独写一篇总结。
题目中提到的四种引用:强引用、软引用、弱引用、虚引用。
这四种引用决定在各种对象在垃圾回收时是否需要被回收。


3. 排序算法

常见8种排序算法。

英吹思婷!


4. 多线程

4.1. 线程与进程的区别?

线程是CPU调度和分派的基本单位;
进程是系统调度和分配资源的基本单位;

4.2. 实现多进程的三种方式

4.3. 继承Thread类与实现Runnable接口的区别(实现接口的优势)

(也是创建线程的两种方式)

  1. 继承只能单继承,接口可以实现多个接口;
  2. (实现接口)适合多个线程共享代码;
  3. (实现接口)增加程序健壮性:线程共享代码,数据和代码独立。

4.4. 线程池

为什么要用线程池

  1. 控制线程数量;
  2. 省去创建和消耗。

常见线程池(名字记不住也没关系)

  1. newSingleThreadExecutor
    单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务;
  2. newFixedThreadExecutor
    固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行
  3. newCacheThreadExecutor
    可缓存线程池,空闲时回收,不够时添加
  4. newScheduleThreadExecutor
    大小无限制的线程池,支持定时和周期性的执行线程

了解关于线程池的哪些参数?

初始线程数、最大线程数、空闲线程数。。。
(各自的作用顾名思义,让面试官觉得你懂就行了)

4.5. 线程安全

线程安全是什么?(理解)
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。

实现线程安全的两种方式?

synchronized与Lock。

二者的区别是什么?

volatile关键字的作用是什么?

作用:保证可见性一致性

(当我们使用volatile关键字去修饰变量的时候,所以线程都会直接读取该变量并且不缓存它。这就确保了线程读取到的变量是同内存中是一致的。)

4.6. 死锁

什么是死锁?

两个进程各自占有一个资源,并申请对方的资源,永远阻塞。

(与数据库中的死锁对比理解)

死锁的条件?(了解)

避免死锁的著名算法(了解)

银行家算法


5. 框架(开发)

为什么要使用框架?(常问)

降低耦合度,提高代码复用率,提高开发效率。

三层架构的含义?

View层:用于接收用户提交请求;
Service层:系统的业务逻辑;

![Uploading 微信图片_20171027203230_563560.png . . .]Dao层:直接操作数据库。

三层架构

SpringMVC的含义是什么?

Model:模型,承载数据,并对用户提交请求进行计算的模块;
View:视图,为用户提供使用界面,与用户直接进行交互;
Controller:控制器,用于将用户请求转发给相应的Model进行处理,并处理Model的计算结果向用户提供相应响应。

MVC工作流程

MVC

三层架构与MVC的关系

三层架构的View:对应MVC中的View和Controller;
MVC中的Model:对应三层架构中的Service和Dao。

三层架构与MVC

SSM与三层框架的关系

SSM即SpringMVC、Spring、Mybatis三个框架。

SpringMVC:作为View层的实现者,完成用户的请求接收功能。SpringMVC的Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。

MyBatis:作为 Dao层的实现者,完成对数据库的增、删、改、查功能。

Spring:以整个应用大管家的身份出现。整个应用中所有的Bean的生命周期行为,均由Spring来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由Spring进行管理。

SSM与三层架构

什么是IOC?(控制反转)

对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

(IOC是Spring所倡导的开发方式:所有的类都会在spring容器中登记,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。
所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。)

如何实现IOC?——DI(依赖注入)

(比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象;
有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。
在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。)

DI是如何实现的?

反射

什么是AOP?(面向切面编程)

在我们的应用中,经常需要做一些事情,但是这些事情与核心业务无关,比如,要记录所有update方法的执行时间时间,操作人等等信息,记录到日志,
通过spring的AOP技术,就可以在不修改update的代码的情况下完成该需求。

AOP如何实现?

代理

上一篇 下一篇

猜你喜欢

热点阅读