笔试

image

操作系统

进程和线程

面试官根据你说的,了解到你的侧重点,然后在展开

进程相当于一个容器,PC:program counter,TLS:Threading local storage

image

image

寻址

image

网络

网络传输:

image

不可靠

1.丢包,重复包 办法:??

2.出错

3.乱序

不安全

1.中间人攻击

2.窃取

3.篡改

4.csrf,xss

滑动窗口机制

tcp传输的可靠保障

1.TCP协议中使用

2.维持发送方/接收方的缓冲区

image

image

image

例题

image

image

image

数据库

语句

1.join

2.group by

事物

特性:ACID

隔离界别:

1.read uncommitted

2.read committed

3.Repeated reads

4.serializable

乐观锁 : 应用冲突少的情况

1.读取数据,记录timestamp

2.修改数据

3.检查和提交数据

image

image

面向对象

对象与类

image

image

类的特殊函数

1.构造函数

2.equals

3.hashCode

4.toString

hashCode主要应用与hashSet,hashMap,hashTable中,
首先将对象放入这些容器中,hashCode能一下子定位到存放该对象的物理位置上,先比较hashCode是否相等,若相等,在比较equals是否相等,这样能降低对象比较次数,提升容器存放对象的效率。

  • 相等(相同)的对象必须具有相等的哈希码(或者散列码)。

  • 如果两个对象的hashCode相同,它们并不一定相同(equals比较)。

接口和抽象类

使用接口的原因:

1.从用户角度看问题

2.强调合约

3.强制双方无法犯错

抽象类:

  • 可以有成员变量
  • 可以有部分实现
  • 不可以多重继承

接口和抽象类是两个不同纬度的东西,抽象类侧重与实现

image

实现iterable接口

继承与封装

  • is-a关系(汽车是交通工具)
  • 子类增加或修改基类(增加成员变量,函数)
  • Java中所有函数都相当于C++虚函数

不可变对象 immutable Objects

  • 可以引用传递
  • 可以缓存

final 关键字

  1. 类声明 -> 类不可以被继承
  2. 函数申明 -> 函数不可以在派生类中重写
  3. 变量申明 -> 变量不可以指向其它对象
  4. static final 变量 -> 用于定义常量,名称一般大写

实现不可变:

  • final关键字无法保证不可变
  • 从接口定义,类的实现上保证不可变性
  • Collections.unmodifiableXXXX

泛型

image

image

image

image

设计模式

Singleton:确保全局只有一个对象

优点:构造缓慢的对象,需要统一管理的资源

缺点:很多全局状态,线程安全性

image

变继承为组合

image

装饰器

image

如何创建对象

使用new创建的缺点

  • 编译时必须确定创建哪个类的对象
  • 参数意义不明确

高级知识点

并行计算

方法:

1.将数据拆分到每个节点

2.每个节点并行计算出结果

3.将结果汇总

死锁

线程池

创建线程开销大,所以使用线程池

线程池优点:预先建立好线程,有任务,能立即派发

线程池的参数

  • corePoolSize :线程池中初始线程数量,可能处于等待状态
  • maximumPoolSize :线程池中最大允许线程数量
  • keepAliveTime :超出corePoolSize部分线程如果等待这些时间将被回收

资源管理

Java垃圾回收

  • 不被引用的对象会被回收
  • 垃圾回收包括Minor GC和Full GC
  • 垃圾回收时所有运行暂停