校招 - Wind Java 一二面
Wind 一面 (20min)
代码量规模?我说十多万行
大创项目
- 设计流程:数据库设计 -> RESTFUL API CRUD -> 其他设计
- 数据库设计原则,设计思路,表的规模
- 数据库第三范式
实习项目
- 主要都做的爬虫吗?
- Docker 你用来干什么了?
网络相关
- GET POST 区别
- TCP 与 UDP 区别
- TCP 粘包
算法
- 时间复杂度、空间复杂度的理解
- 二分查找的时间复杂度
Java
- 容器类,简要讲讲 HashMap,List、ArrayList、Vector 都是什么? 使用场景? 底层原理、数据结构?
- Spring IOC,AOP 的理解
设计模式
- 你知道哪些设计模式,答:单例,简单工厂,抽象工厂,模板模式,消费者生产者模式,观察者模式,代理模式(静态代理、动态代理)
- 简单工厂与抽象工厂,工厂模式做过哪些实践
- 里氏替换原则
反问:您觉得我目前的水平参加秋招,最欠缺的部分是哪里?
面试官答:我觉得你相关的基础知识都还不错,就中间价相关的,比如消息中间件,你应该多了解了解。
Wind 二面 (35-40min)
数据库
- 数据库索引为什么快;
- 答:使用层面,从
explain
可以分析SQL语句,使用索引,避免全表扫描 - 数据库底层实现,是使用 B+树,实现快速查找
- 答:使用层面,从
- 联合索引用过吗?讲讲
- 答:最左匹配原则、最左匹配原则的成因(B+树)
设计模式
- 单例模式什么意思?
- 单例模式怎么实现?懒汉饿汉式区别在哪里?
- 单例模式的漏洞或者非单例怎么出现的?怎么处理?
- A1:反序列化漏洞、多线程漏洞
- A2:反序列化使用 transient 对象+ readObject() 定义逻辑,多线程使用双重锁
- 设计原则:单一职责 / 里氏替换 / 开闭 / 接口隔离 / 依赖倒置
- 开闭原则讲讲?
Java 多线程
多线程安全问题
怎么处理多线程安全问题
除了加锁,有没有别的处理方式
乐观锁是什么?
乐观锁,你实践过吗?
实践过,来谈谈怎么处理?
当时解决了什么问题,采用乐观锁
专业、学校生活
- 你是跨行业、跨专业的,你怎么学习的?
- 你是怎么样学习一门新语言
- 学校做过的一些代码实践,讲讲?
代码规范
- 你如何设计你的代码规范,或者你怎么让你的代码规范的
- 答:① 封装和抽象,抽象成一个类、函数;② 变量的命名,可读性的保证;③ 遵循公司/项目的技术规范
人事沟通方面
- 之前的公司的文化有哪些不认同的?
- 之前遇到过别人非常不负责任的行为,举例一下,你怎么和他后续合作呢?
反问环节
- Q:您觉得我目前欠缺在哪里?
- A:感觉你的知识广度不错,深度欠缺,比如像多线程、算法,这两块属于比较难学的部分,你应该多 coding,感觉你理论应该了解,多些时间。