前言
经历了两次面试,记录一下
XX银行
1.自我介绍
说了一下项目经历,项目主要功能,项目负责部分,项目技术栈
2.处理过的项目中最难的一点是什么
说了一下问卷系统导入答卷部
3.你的多线程处理在并发情况下会出现什么问题。
4.jvm熟悉吗?(不熟悉)
5.项目中除了mysql还用了哪些数据库。(h2)
6.mysql中左链接,排序,倒序,组合(Group by)关键字是什么
7.在excel表数据处理时除了字段校验外还要注意什么?(不知道想问什么)
8.数据流怎么关闭的
9.String StringBuilder StringBuffer区别。
北京某科技公司一面
1.自我介绍
2.笔试算法题复盘
3.http与https区别,https的请求过程是怎么样的。
4.你后台接口怎么实现的
5.如果不使用框架,怎么实现一个后台接口?(提示socket)
6.nginx主要解决什么问题,如何解决的,什么是同源,如果不用nginx能不能解决,怎么解决
7.关系型数据库和非关系型数据库分别举例,两者区别
8.事务有什么好处,怎么保持的数据一致性
9.索引在哪用过,索引底层是什么,索引怎么通过b+树查数据的(不是一条数据),b树与b+数区别,联合索引怎么通过b+树查数据
10.服务器是如何处理并发请求的,如果让你设计,怎么设计,服务器处理一个请求创建一个线程还是进程,线程和进程区别,并发与并行区别。
11.学校成绩。
这家面试明显感觉到问题更有深度,更偏向对知识的思考。
save方法的并发问题
@Test
void saveUser() throws InterruptedException {
List users1 = new ArrayList<>();
List users2 = new ArrayList<>();
for (int i = 0;
i < 50;
i++) {
User user = UserControllerTest.getOneUser();
users1.add(user);
user = UserControllerTest.getOneUser();
users2.add(user);
}new Thread(() -> {
for (User user: users1) {
this.userRepository.save(user);
}
}).start();
new Thread(() -> {
for (User user: users2) {
this.userRepository.save(user);
}
}).start();
Thread.sleep(10000);
Assertions.assertEquals(this.userRepository.findAll().size(), 100);
}
【面试记录】测试了一下,并没有什么问题。
推荐阅读
- 面试|欢迎使用CSDN-markdown编辑器
- 杂谈|程序员这样优化简历,一投制胜
- #yyds干货盘点#Linux常见面试题之操作实战
- #|【java基础】子线程任务发生异常,主线程事务如何回滚()
- 安卓面试1
- google|《Google时代的工作方法》读书笔记(1)
- java|一定不要让程序员拿到阿拉丁神灯 | 每日趣闻
- 面经|腾讯 5 轮面试,接到 40k*16 的 Offer !详解面试流程和真题
- 面试|2022届大厂面试 JUC常考总结版