深漂 6 年了,回西安的一波面经总结✌️
二哥的编程星球已经有 470 多名 小伙伴加入了,如果你也需要一个良好的学习氛围,戳链接加入我们吧!这是一个 Java 学习指南 + 编程实战的私密圈子,你可以向二哥提问、帮你制定学习计划、跟着二哥一起做项目、刷力扣,冲冲冲。
大家好,我是二哥呀。
熟悉二哥的读者朋友们应该都知道,我是在 2014 年离开苏州的,很不舍,舍不得相处的非常愉快的同事,舍不得那片一边出太阳一边下雨的天地,舍不得刚签了三年的新合同。
舍不得同事,因为一起相处了三年半,有感情了,大家都是真心相待,没有勾心斗角,尤其是我们一起进来的那一批,十几个人,吃睡玩工作几乎都在一起。
舍不得那片天地,因为治好了我多年难愈的青春痘😂,可能是气候比河南更湿润更温和一些,雨水多嘛。真的是一方水土一方人。
舍不得新合同,毕竟薪资待遇涨了不少,大学毕业那会签的是一份外包合同,这份是提前转正后的第一份新合同,由于实习的一年,加上正式工作的两年,表现得到了领导的认可,这份新合同里的薪资也是同一批进入公司里面的小伙伴当中最高的。
但有更重要的事情需要我离开,木得办法。
所以现在,一听到有朋友说离开北京了,离开上海了,离开杭州了,总还是能想起来我离开苏州时候的一幕幕。
记得离开的前一天,领导请我们几个相处得比较好的同事为我送行,在一家很温馨的餐馆,那是我第一次喝女儿红这种黄酒,温一温下肚,舒服香醇。那一夜,太多的故事。
好了好了,不煽情了。今天看到一个朋友从深圳离开回到西安的故事,不由得想起了从前,和我非常相似。对于我们互联网打工人来说,从一线城市回到二三线城市,是一种非常普遍的选择,其中的滋味恐怕只有我们最清楚。
下面👇🏻是朋友的分享和面经,希望能给公众号的读者朋友们(尤其是打算回二三线城市的)一点点启发和参考😄。
如果从我第一次踏上深圳这片土地算起,我已经深漂了整整 6 年了。今年留深过年期间,我们经过家庭会议的讨论,决定老家西安。
回来的这个想法其实之前一直也有过,但是呢,在深圳工作久了之后,做出这个决定还是挺需要勇气的。
这些年虽然努力,但是还是买不起深圳的房子,也没有魄力贷款几百万,还款 30 年。那样的压力实在也太大了!
我还是喜欢安逸一些,人生嘛,挣钱也不是最重要的,每个月还款 2w 左右 ,还款 30 年,真受不了😖。再说,西安的 IT 互联网环境这几年也不错,找工作没啥问题。
最近两周也在陆陆续续的面试,下面是一些公司的面试题,有的我记录了,有的忘记了。
丰疆智能
西安研发中心,是深圳或者北京的面试官来面。
一面
主要问了项目和一些基础技术,项目细节问的非常细。
线上笔试
在线笔试,主要是考察设计和代码能力。
二面
面试体验很差,不停的 PUA,让给自己打分、笔试打分,反正就是咄咄逼人的感觉,语气也很不耐烦,互相不合适吧~
- 平时如何评估工作量的?
- 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 等),也记不清了,反正每一家都大差不差,对于八股文的复习大家可以看二哥的《Java程序员进阶之路》,面渣逆袭部分基本上把所有面试题都覆盖到了。
然后就是项目方面,大家一定要梳理明白你简历上的项目,因为稍微正规一点的大厂面试官,面试时注意力都是很集中的,而且思维也能跟上,你讲的项目时的每一句话他都会思考后给出问题,跟你深入讨论。
而且建议你的项目尽量复杂一些,有难度、有挑战一些,这样才有深入讨论交流的话题,不要太老实,就写自己平时增删改查之类的业务功能。就算项目不是你一个人做的,但是你了解同事是怎么做的,遇到了哪些问题,如何思考解决的,这样对你个人来说也是经验和成长。
至于回老家后是啥情况,会不会后悔,后面会再跟大家分享,起码目前是满怀期待,回去后有家人、有朋友,应该还可以。也打算工作之余带着家人去周边逛一逛、吃一吃。我小时候爱钓鱼,回去感觉也可以安排上了,哈哈 😄~
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
转载链接:https://mp.weixin.qq.com/s/vIqfeVmWtDnvsHllC4M5Tg,整理:沉默王二
GitHub 上标星 7600+ 的开源知识库《二哥的 Java 进阶之路》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 7600+ 的 Java 教程
微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。