一面
1.1 面试体验
- 时间:2020-08-23 15:00~16:00
- 面试官💖💖💖💖
1.2 手撕代码
Input:
- 一个正整数数组,一个目标数字
Output:
- 如果数组中存在两个数字的和与目标数字相等,则打印出来这两个数字及对应下标位置;
- 如果不存在则打印null。
Example:- 输入数组为[3,10,2, 15, 7, 11, 9, 54], 目标数字为9,则输出为 index2=2, index4=
要求:- 输出所有满足条件的情况
1.3 问题
-
HTTPs和HTTP
-
HTTP应用
-
HTTP状态码解释
-
如何实现一个断点续传
断点续传发生在大文件切片上传场景
大文件上传
(1)前端上传大文件时将文件切片,并发上传多个切片,最后发送一个合并的请求通知服务端合并切片
(2)服务端接收切片并存储,收到合并请求后使用流将切片合并到最终文件
(3)原生 XMLHttpRequest 的upload.onprogress 对切片上传进度的监听
(4)使用 Vue 计算属性根据每个切片的进度算出整个文件的上传进度断点续传
(1)使用 md5 根据文件内容算出文件 hash, 通过 hash 可以判断服务端是否已经上传该文件,从而直接提示用户上传成功(秒传)
(2)通过 XMLHttpRequest 的 abort 方法暂停切片的上传
(3)上传前服务端返回已经上传的切片名,前端跳过这些切片的上传 -
设计模式(单例、工厂、抽象工厂、迭代器、包装器)
-
抽象工厂和普通工厂模式的区别
-
手写单例模式(枚举、懒汉、饿汉、双重校验锁、匿名内部类)
-
类的加载过程
-
双亲委派
-
内存泄露是怎么回事,Java的内存泄漏
-
如何实现一个线程池
二面
2.1 面试体验
- 时间:2020-08-25 15:00~16:20
- 面试官💖💖💖💖
2.2 手撕代码
- 十进制转三进制
- leetcode 253:会议室问题
2.3 问题
- 局部性原理
- 时间局部性: 如果程序中的某条指令一旦执行,不久以后该指令很可能再次执行;如果某数据被访问过,不久以后该数据很可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。
- 空间局部性: 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上就是建立了 “内存-外存” 的两级存储器的结构,利用局部性原理实现髙速缓存。
- 操作系统作业调度方法
- FCFS调度有什么优缺点
- 时间片调度的优缺点
- HTTPs通信过程详解
- 设计模式的设计原则
- 解释抽象工厂和工厂方法设计模式的区别,举例说明(复盘一面)
三面(已凉)
3.1 面试体验
- 时间:2020-08-31 15:00~16:10
- 面试官💖💖💖💖
3.2 手撕代码
输出所有合法括号
最小字串覆盖
3.3 问题
- 网络分层
- 实习
- DNS域名解析
- DNS劫持,如何防止
- Java内存模型
- 什么是字节对齐
- Java的对象占多少内存
- 不做安全,为什么做客户端