丰疆智能
西安研发中心,是深圳或者北京的面试官来面。
一面
主要问了项目和一些基础技术,项目细节问的非常细。
线上笔试
在线笔试,主要是考察设计和代码能力。
二面
-
平时如何评估工作量的?
-
Java中的集合有哪些?ArrayList 的扩容机制?
-
无参构建函数初始为空数组,添加第一个元素时,创建长度为 10; -
当插入元素不够用时,扩容 1.5 倍,如果还不够用就扩容为需要的大小。 -
HashMap 什么场景下是线程不安全的?会导致什么后果?
-
线程池有哪些参数?并介绍参数在什么场景下使用?
-
当核心线程数未满,继续提交任务,是复用已经空闲的线程还是继续创建?
-
Netty 中的核心组件有哪些?ByteBuf 有哪些方法?Netty 如何实现拆包?自定义拆包处理器是怎么实现的?
-
Spring 中有两个同样类型的 Bean,如何注入?如何实现全局统一注入?
-
AQS 了解?里面都有哪些属性?AQS 有几种模式?你对 AQS 还有哪些理解?
-
AQS 的公平锁和非公平锁原理是什么?读写锁的互斥规则?
-
Mybatis 如何实现结果绑定到 Java 对象的?
-
Spring 为什么要有三级缓存?
-
RocketMQ 怎么保证消息不丢,同步发送的 API 是啥?消费者如何保证消息不丢,除了 ACK 机制还有什么方法可以保证?
-
JVM 的内存模型?哪个区域不会发生 OOM?
-
JVM 都可以调优哪些参数,JDK8 默认的垃圾回收器是啥?都有哪些常见的垃圾回收算法?CMS 垃圾回收卡顿暂停了怎么处理?
还有一些问题,没听明白要问啥,就询问能具体解释一下?他直接说他知道了,下一个问题。。直接就想挂电话了~~
西安移动研究院
俩小时 三个人轮流问
一面
-
介绍项目&细节&自己负责了哪些编码工作;
-
包装类是深拷贝还是浅拷贝?
-
Redis的key删除策略?
-
写代码时常见的内存泄漏?
-
MySQL索引的结构和搜索数据的过程?
-
数据库的隔离级别?分别解决什么问题?
-
常用的 Spring Boot Starter有哪些?
-
Netty为什么这么快?Epoll的实现原理?
-
线程A中创建线程B,线程B如何捕获线程A的异常?
-
K8s中config中环境变量修改,Docker能否获取?配置文件修改Docker能否获取?
-
接口限流如何实现,Guava和Redis如何在项目中结合使用的?
-
HashMap能否直接遍历删除?CurrentHashMap能否遍历删除?
-
有哪些让线程阻塞的方法?有哪些类使用了 LockSupport?
-
泛型中Extends和Super关键字的区别?在put操作多时用哪种,为什么?在get操作多时用哪种,为什么?
-
频繁往外读取内容的,适合用上界Extends,因为读取的元素都可以用上界定义的类型来接收,父类可以指向子类,如果用Super,只能用Object类型类接收了,因为不确定是哪个父类;
-
经常往里插入的,适合用下界Super。相当于放松了插入元素的类型,既然元素是Fruit的基类,那往里存粒度比Fruit小的都可以,如果是extends,则插入时会报错,因为集合中不确定到底存的是哪个子类,会报错;
-
SpringBoot自动装配原理?
-
项目中如何做统一异常处理?
-
Spring中配置文件的加载顺序?
-
项目中如何做监控?JVM进程如何监控?机器资源如何监控?
西安卓派
一面
耗时1小时
-
Java反射中Super和Extend有啥区别? -
线程池的运行原理?线程池大小如何设置?项目中如何使用线程池?如何防止线程池滥用?线程池中阻塞队列的意义是啥? -
Spring中的 ApplicationEvent 使用过? -
ThreadLocal的数据结构?平时怎么使用? -
Spring中的@Transactional是如何使用ThreadLocal? -
ThreadLocal的key为什么要设置为弱引用而不用一般引用?是基于啥考虑的? -
多线程中能否使用ThreadLocal?如果要使用该怎么做? -
Spring事务的隔离级别了解?你们怎么用?你怎么理解隔离级别? -
Spring中的AOP切面,如果定义了多个增强执行顺序是怎么样的? -
DDD了解?是否知道其中的术语? -
设计模式了解哪些?如何使用的?具体的使用请求参数以及响应参数是怎么设计? -
设计原则中的单一职责是啥意思?给一个场景问是否应该设计成单一职责? -
Tomcat的线程池大小如何配置? -
HTTP协议的无状态你怎么理解?无状态有啥好处和坏处? -
介绍项目,特别仔细的聊项目细节; -
如何实现一个分布式会议室预定系统?保证同一时间段会议室只能被预定成功一次? -
是否愿意学英语?
二面
20多分钟。
hr 面,聊聊做了什么项目,遇到了最复杂的问题是啥?如何解决的?介绍公司和项目,以及相关福利。
三面
2个半小时
上机写代码,两道算法题,一道系统设计题。
面试过程中面试官非常耐心,写的不好的题会给你引导优化方向,整个过程非常愉快。
经验:上机考察代码能力,如果题目没看懂一定要积极主动询问,然后就是如果不会解题,可以和面试官交流自己的思路,避免低头不语,写了半天也没有答案;
四面
三面之后紧接着是老板面,西安这边的研发负责人。
主要是聊项目、对于项目设计的理解,什么是好的代码?什么是好的设计?
给出一些具体设计场景,让做选择,反正也没有唯一答案,说清楚自己的考虑点和原因即可,这种就是设计模式作为理论依据,然后结合平时自己的编码实践谈谈感受。
同时也聊到未来的一个发展方向,我正好最近对于后面走技术路线还是技术管理非常困惑,从聊的过程中这个问题也启发很大。
个人感受
卓派是一家外企,内部技术氛围很棒,从整个面试过程中都能感受到面试官非常有包容性,虽然我对于敏捷这块很多专业名词不太了解,也很细心的说了中文对应的翻译,面试的同时也涨了很多见识。
公司的业务发展目前只能算一般,毕竟西安团队只有 30 人,今年预计扩充到 50 人,卡车司机接单也是属于一个细分小众领域,所以公司业务发展这块存在一定的风险。
福利待遇也很不错,全额最高公积金,配置新款mbp,人体工程学椅,每月团建,我觉得这种公司因为年终奖不高的缘故,肯定不会卷,不像大公司年底绩效决定了一年是否白干,也就不存在拼命卷的情况。
西安腾讯云
一面
耗时:50 分钟
-
自我介绍&介绍项目; -
死磕项目实现过程和个人做了哪些事情,优化了什么,问的很细很细; -
关于线程池的一个场景题; -
Future 实现阻塞等待获取结果的原理? -
谈谈什么是零拷贝? -
一共有几种 IO 模型?NIO 和多路复用的区别? -
JDK 中的 NIO 使用的是什么模型? -
可重入锁和 Synchronized 的区别?Synchronized 的原理?可重入锁的实现原理? -
乐观锁和悲观锁, 让你来写你怎么实现? -
ReentrantLock的实现原理?Synchronized 是个悲观锁还是乐观锁? -
Paxos 算法了解?并发提案时如何处理? -
B+树聊一下?B+树是不是有序的,怎么样的顺序? -
TCP 怎么实现拥塞控制?怎么实现重传(说了思路不过具体的实现回答的不准确)? -
看你有 JVM 调优经验,介绍下如何调优的; -
算法题:给一个无序的数组,选一个随机数,实现左边比它大,左右比大小,要求保持原有相对顺序不变;给出的实现方法时间复杂度是多少?
二面
25分钟
-
两个有序数组求交集;
-
项目介绍;
-
Paxos 协议了解?工作流程是怎么样的?
-
时隔太久忘记了。。
三面
25分钟
-
两个有序数组求交集; -
二叉树如何持久化存储; -
自我介绍; -
前几次跳槽的原因? -
介绍一个有技术挑战的项目?追问项目细节,问到有点招架不住了; -
数据库分库分表的缺点是啥? -
分布式事务如何解决?TCC 了解? -
介绍下你们微服务项目的整体架构?服务间通信的原理?同步还是异步? -
RocketMQ 如何保证消息的准确性和安全性?
翼支付
一面
-
自我介绍&项目介绍; -
介绍项目中如何使用微服务架构,个人主要负责了哪些模块,用到了哪些技术; -
HashMap 如何减少 hash 碰撞; -
什么场景需要重写 HashCode 方法; -
项目是否用到了线程池?怎么用的?常用参数有哪些? -
当线程池核心大小满了,队列满了,在提交任务会创建线程还是排队? -
谈谈对于数据库索引和约束的理解; -
数据库的时间类型(DataTime&TimeStamp)?有啥区别?分别占用多大的存储空间? -
Kafka 如何实高可用、可扩展; -
定时任务框架了解哪些(Elastic-Job、Xxl-Job、Quartz),实现原理是啥,优缺点对比; -
Apollo 实现热部署的原理; -
Redis 热 Key 如何解决?只回答了打散这一种方案 -
Redis 的过期删除策略是什么? -
Spring 如何同时注入多态 Bean?提出了通过工厂获取多态实例的方案,面试官说可以集合注入;
二面
群面,一共 5 个候选者一起参加,每人一两个问题。
-
问项目,以及设计如何优化? -
是否带过团队?如何帮助他们?
那面经就分享这些了,有一些公司的面经没有及时记录(京东、趣联网络科技、中兴、民生科技、BYD 等),也记不清了,反正每一家都大差不差,对于八股文的复习大家可以看开源的 JavaGuide,基本上都涉及了。
然后就是项目方面,大家一定要梳理明白你简历上的项目,因为稍微正规一点的大厂面试官,面试时注意力都是很集中的,而且思维也能跟上,你讲的项目时的每一句话他都会思考后给出问题,跟你深入讨论。
而且建议你的项目尽量复杂一些,有难度、有挑战一些,这样才有深入讨论交流的话题,不要太老实,就写自己平时增删改查之类的业务功能。就算项目不是你一个人做的,但是你了解同事是怎么做的,遇到了哪些问题,如何思考解决的,这样对你个人来说也是经验和成长。
0 条评论