7月10日 蔚来提前批 后端开发1、2、3面 面经
一面 7-10 早上10点 37min
- Netty(项目中用到了,大概聊了一下),简单介绍,IO多路复用
- BIO、NIO的区别。(上个问题中我说到了NIO)
- NIO、AIO的区别。
- IO多路复用底层在Linux中的原理(用的select、poll、epoll)
- redis有哪些特性使它能作为缓存(在内存中,单线程)
- redis为什么单线程还能快(忘了,没答上)
- 数据一致性(忘了,没答上)
- HTTPS如何保证传输安全性(说了下HTTPS的加密过程)
- HashMap如何处理Hash冲突
- 其他的处理Hash冲突的方式
- Java8中相对于Java7,对HashMap做了哪些优化
- ConcurrentHashMap如何保证线程安全
- HashMap能不能存空键和空值
- ConcurrentHashMap能不能存空键和空值
- MySQL中InnoDB的索引为什么使用B+树而不用别的结构
- 聚簇索引和非聚簇索引
- user表,有id、name、age等信息,去查的时候,索引是怎么用的
- 算法题
- 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
- 项目中用消息中间件主要解决哪些问题、起到什么作用
- 如何保证消息丢失的情况
- MySQL事务隔离级别
- 每种隔离级别解决了什么问题
- 使用start()启动线程和run()去启动线程有什么区别
- ThreadLocal为什么用完之后要手动去remove,如果不去remove会有什么问题(面试官看我不会,问我项目中有没有用到ThreadLocal,我说没有用到,就跳过这个问题了)
- sleep()和wait()的区别
- wait()方法为什么要放在Object类中(不会)
- 一个任务提交到线程池,说一下执行流程
- 线程池中达到最大线程数,之后任务量小了,核心线程数到最大线程数之间的这些线程也会去队列中竞争任务吗
- 反问环节
一面结束之后,没几分钟就收到二面的邮件,确认参加后就进入面试房间等着了
二面 10点55左右 30min
介绍了一下自己做过的项目,然后问我更想聊哪个项目。然后就围绕着项目中的业务和技术进行场景拓展和深入,问题大多是如果xxxxx情况会怎么做然后逐步深入。深入到你不会就换别的。项目聊了10来分钟。
- Spring中常用的注解
- @Autowired和@Resource有什么区别
- Mybatis中的@MapperScan中的路径有什么注意事项
- AOP可以做什么
- AOP的实现原理,两种动态代理的区别
- 选择Spring的原因,它的优点是什么
- IOC的作用是什么,相比于非Spring的项目,优点在哪
- JVM的内存区域
- SQL优化方法
- MySQL中in和exist有什么区别
- volatile的作用
- 什么情况下会用到volatile
- 有没有想过会从事后端开发中的哪些业务功能和方向
- 反问环节
反问的时候面试官说我过了,让我保持在线等下一轮面试。
二面完也很快收到三面的邮件,点了确认参加然后就进房间等
三面 11点40左右 43min
- 线程池有哪些参数,工作原理
public void method1() { method2(); } @Transactional public void method2() { }
method1没有事务注解,2有。这个类中1调用2,1会不会开启事务,为什么。
3. 动态数据中求中位数,数据一直在动态增加,顺序也不固定,说设计思路
4. 用数组实现一个队列类,包含以下方法:入队、出队、size()。写出代码后继续不断升级要求,循环使用数组空间,加锁等等。这一个题就搞了好久,写代码->调试->加要求->写代码->调试->加要求,循环。
5. 买卖一次股票,最大利润。leetcode原题。
最后一个题写完就直接结束了,啥也没说。
蔚来的面试体验整体来说非常好,面试官很和善,不会的题目也会给出正确的答案或者引导你去思考,回答中有不太准确的地方也会帮你纠正。一早上面三轮实在有点刺激。
#面经##蔚来汽车##校招##Java工程师#