跳至主要內容
Java基础复习-Spring

这一部分主要是Spring和Bean相关概念的复习

1.Spring的两大特性

分别是AOP(面向切面编程)和IOC(依赖反转)

其中AOP是基于面向对象开发思想的一种补充,将业务代码中重复的部分封装为切面,实现这部分内容与业务代码的分离,降低代码的重复性和耦合度。

IOC是原本由我们去创建、管理的对象交由Spring容器进行管理,由Spring借助反射机制对Bean进行管理,使得对象的生命周期(从创建到销毁)不需要我们手动去管理。

2.Spring中AOP的实现方式

动态代理实现,包括JDK动态代理和CGLib动态代理


Unisky大约 3 分钟学习面试Java
Java基础复习-线程与并发

这方面接触的不多,希望不会出错误

1.线程、进程和协程的区别

进程是操作系统在内存中分配的一个应用程序,进程之间互相独立,有独立的内存空间。

一条进程可以包括多条线程,线程是执行任务的主要单位,同进程内的所有线程共享该进程的数据,可以并发执行,需要同步机制避免线程对数据操作的冲突。

线程不共享的资源包括:栈、寄存器、线程局部存储、线程信息等

一条线程可以拥有多条协程,协程调度由程序(用户)来执行,而进程线程都由内核调度。Java没有实现协程(Kilim框架模拟实现了协程),Python中通过yield/send或async/await实现协程。


Unisky大约 6 分钟学习面试Java
Java基础复习-JVM

JVM是指Java Virtual Machine,是将字节码文件.class编译成电脑可以运行的文件,是独立虚拟机,兼容各种操作系统,是实现java跨平台的重要部分。

1.JVM内存模型

jvm

如上图,其中下面的大方块则代表了JVM

JVM的内存模型可以分为五个主要部分,分别是方法区、堆,虚拟机栈、本地方法栈和程序计数器。其中堆和方法区是被所有线程共享的,而栈和PCR是由线程私有的。

堆的进一步分类

alt text

Unisky大约 5 分钟学习面试Java
Java基础复习-JDK基础

由于基础的东西很多、很杂,所以这里也只能是想到什么是什么

1.OOP(面向对象)

面向对象是一种重要的软件开发思想,将待解决的问题通过对象的设计进行解决。

OOP有四个重要的特性:

  • 封装:类的信息被隐藏在类内部,一般不允许外部直接去访问类的数据,而是通过类的方法进行访问和操作。
  • 继承:继承是通过已有的父类派生新的子类,子类可以继承父类本来的属性、方法和特性,并可以在其基础上进行扩展。Java类只能继承一个非final类。
  • 多态:多态是指在不改变代码的情况下,改变运行指定的代码部分从而实现不同的功能。多态的三个重要要素是继承重写父类引用指向子类对象。重载方法可以在同一个类中根据不同的参数列表执行不同的方法主体,子类重写父类方法可以通过对象的实际类型来执行相应的方法。
  • 抽象:将客观的事物通过代码抽象出来,抽象类、抽象方法。

Unisky大约 11 分钟学习面试Java
Java基础复习-集合

0.什么是Java Collection(集合类)

Java的Collection分为两个大类接口,一类是Map,另一类是Collection,这两个接口又依次往下派生了各种集合类型。最主要的四大类型是List, Set, Queue, Map。 具体的派生情况如下图所示

Collection接口
alt text
  • List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null;
  • Set 不能存放重复元素,无序的,只允许一个null;
  • Map 保存键值对映射;List 底层实现有数组、链表两种方式;
  • Set、Map 容器有基于哈希存储和红黑树两种方式实现;
  • Set 基于 Map 实现,Set 里的元素值就是 Map的键值

Unisky大约 11 分钟学习面试Java
二进制的计算

1.无符号数二进制表示

就是最常见的二进制表示法,对于一个字节的八位数(1B=8bit),可以储存0~255的无符号数。

2.有符号数二进制表示

众所周知,有符号的二进制数的表示法包括原码、反码和补码。其中补码是计算时最为常用的表示类型。在计算机系统中,二进制数全部用补码来表示。若为有符号数,最高位为符号位。

对于正数,原、反、补码均相同,符号位为0

对于负数,原码符号位为1,反码为对原码除符号位全部取反(即进行~运算),补码在反码的基础上+1,若进位到符号位,则溢出,再往上进位需要舍去。

对于一个字节,原码和反码可以储存-127~127,补码可以储存-128~127


Unisky大约 5 分钟学习Java二进制位运算
编译原理-词法分析器

Lexical Analyzer Report

1、Motivation & Content description

Build a lexical analyzer program to read stream of characters and show the sequence of tokens.

Requirements:

(1) Input:

  Stream of characters

  REs(The number of REs is decided by yourself)


Unisky大约 4 分钟学习编译原理JavaEnglish-Only
编译原理-语法分析器

Syntax Parser Report

1、Motivation & Content description

Build a syntax parser program to read stream of characters and CFG and show the sequence of devirations by using top-down syntax analyzing method.

Requirements:

(1) Input

  Stream of characters   CFG(Combination of CFGs of some classes of sentences)


Unisky大约 6 分钟学习编译原理JavaEnglish-Only