程序员深漂 6 年,回西安工作了
共 5326字,需浏览 11分钟
·
2022-07-04 16:37
你好,我是 Guide。分享一篇朋友从深圳回到西安之后的面经总结。
下面是正文。
很多读者都知道我今年是准备回老家西安了,如果从我第一次踏上深圳这片土地算起,我已经深漂了整整 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 等),也记不清了,反正每一家都大差不差,对于八股文的复习大家可以看开源的 JavaGuide,基本上都涉及了。
然后就是项目方面,大家一定要梳理明白你简历上的项目,因为稍微正规一点的大厂面试官,面试时注意力都是很集中的,而且思维也能跟上,你讲的项目时的每一句话他都会思考后给出问题,跟你深入讨论。
而且建议你的项目尽量复杂一些,有难度、有挑战一些,这样才有深入讨论交流的话题,不要太老实,就写自己平时增删改查之类的业务功能。就算项目不是你一个人做的,但是你了解同事是怎么做的,遇到了哪些问题,如何思考解决的,这样对你个人来说也是经验和成长。
那今天就分享这么多了,至于回西安后是啥情况,会不会后悔,还是等后面回去了再跟大家分享,起码目前是满怀期待,回去后有家人、有朋友,还是更熟悉一些,也打算工作之余的周末带着家人去周边逛一逛,然后可以时常吃到自己喜欢滴美食,确实很期待呢。我小时候还爱钓鱼,回去感觉也可以安排上了,哈哈 😄~
由于问题太多,我这里就不贴参考答案了,上面大部分面试题的参考答案你可以在下面 3 个资料中找到:
Java 面试题&面经汇总 《Java 面试指北》 JavaGuide 在线阅读网站:https://javaguide.cn
2022 面经汇总 :
·········· END ··············
欢迎加入我的知识星球获取更多面试干货,《Java 面试指北》持续更新完善中!
近期文章精选 :
走近作者 :