面试 30 家公司,终于拿到 Offer !!
The following article is from 君哥聊技术 Author 朱晋君
今天分享一个朋友被“毕业”后的求职经历。
我这里就不贴参考答案了,需要参考答案的朋友可以在下面 3 个资料中找到:
Java 面试题&面经汇总 《Java 面试指北》 JavaGuide 在线阅读网站:https://javaguide.cn/
下面是正文。
在老东家干了 6 年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”通知,当然,不光是我,而是整个团队。
毕业,对于我这样的老员工来说是不错的结果,因为正好我也想出去,而且这次公司还能给不少补贴。
回家住了一段时间后,我开始了疯狂面试,今年的求职环境真的让人头疼,不要说张薪了,平薪都很难。下面介绍我面试过的公司。
首先介绍下个人情况,双非本科,写码 8 年,其中 6 年在金融行业,算是有行业积累,但是核心业务并没有接触到。在金融行业工作,技术的提升是比较小的,好多流行的技术栈没有用过。
1 链宇科技(新能源,笔试)
上来就是一套笔试卷,下面是其中两套笔试题:
面试心得:
创业小公司,一上来就笔试题,而且用浏览器笔试回答过程还有视频监控,侵犯隐私,感觉有点恶心; 果断遮住,这公司面过了也不想去; 但太久没刷题,只做下题找下状态。
2 北大医信(医疗行业 erp)
SpringBoot 怎么启动的; RabbitMQ 发消息哪几种方式; 会哪些设计模式,策略模式在项目中怎么用的; 线程怎么创建的,有哪几种方式; 有哪几种线程池实现方式; 哪些场景用消息队列; JVM 参数怎么调优; 反射怎么用。
面试心得:
一面 20 分钟结束,挂!基本都能答上一点点,但是思路不清晰,语言组织吞吞吐吐,技术理解不透彻,太久没面试,紧张。
3 长亮科技(外包)
自我介绍,项目经历; 项目流程是怎样的,你做过的项目,讲讲哪块是你做的? Synchronized 是怎样实现的,偏向锁标志存哪里,为什么升级到重量锁慢,偏向锁有个开关,如果默认开启有什么缺点? Synchronized 为什么慢,cas 是不是操作系统执行的,他比 Synchronized 快还是慢为什么? CAS 平时怎么用的,会有什么问题,为什么快,如果我用 for 循环代替 cas 执行效率是一样的吗? volatile 哪些场景会用到,原理是什么,除了在单例模式中用到,还有什么地方? 还用过哪些分布式组件,Redis 集群怎么搭建的,有哪些配置,哈希槽概念,hash 是怎么分布的? Redis 一个请求过去,是在客户端还是在服务端,通过 key 找到对应的数据? 如果 Redis 集群特别慢,有什么排查方法? 还有其他哪些分布式组件,你最熟悉哪一块? AtomicInteger 自增到一万以后,怎么归零; 源码看过哪些,讲讲。
面试心得:一面 20 分钟挂,好几个没答上来!
4 中诺数科(供应链金融):
自我介绍; 你工作这么多年了,哪些技术栈比较擅长,你觉得你做的好的项目有哪些,或者说业务复杂的地方在哪里,怎么解决的? 说一下贷前,贷中,贷后的流程,你负责哪些模块,讲讲实现流程,有没有技术难点,业务解决难点? 说一下 CAS 怎么用的,会有哪些问题,Synchronized 呢; 说一下你对 Spring 的理解; 我们知道 Redis 很快,访问是在内存中的,除了这个原因,还有没有其他原因? 你是怎么理解分布式架构的,怎么做的微服务? 有没有参与过开源项目的贡献? 你是怎么学习一门新技术的,方法是什么? Java 有哪几种基本数据类型?float 和 double 的区别是? String 和 StringBuffer、StringBuilder 的区别是? List 和 Set 的区别是? HashMap 的底层结构是? MyBatis 一级缓存和二级缓存的区别是? 说一下你对设计模式的理解,怎么根据项目的业务去选哪些设计模式,根据什么情况去做的设计模式? SpringCloud 你用过哪些,怎么用的,为什么选择 SpringCloud 组件? 你用过 Gateway,那么 Gateway 怎么做的动态路由? 说一下 NIO,为什么快,比传统阻塞 io? MySQL 索引建立的时候需要注意哪些? MySQL 查询需要注意哪些事项? MySQL 一句 sql 执行语句,从执行到返回结果,mysql 做了哪些事情? MySQL 字段 char 和 varchar 的区别是啥,varchar(30)代表什么意思? MySQL 查询平时怎么优化的? 消息中间件用的什么?RabbitMQ?有哪几种发送消息的模式? 如果访问一个页面报错,那么怎么开始排查最终定位问题? Spring 的循环依赖怎么实现的?
5 小数点科技(房抵渠道)
你对代码或者系统,做过哪些优化? 系统慢,比如 cpu 高或者内存高,是怎去排查的问题? Redis 有哪几种数据类型,这几种数据类型应用场景分别是怎样的? Redis 怎么保证事务? Spring 事务的传播机制,是怎样的? 如果有一个 select 方法,有 Spring 事务注解,这里面调用了一个 update 数据库的方法, update 是另外一个方法,update 有没有事务? 乐观锁和悲观锁,你在项目中的使用场景是什么? 说一下你对乐观锁的理解? 你的消息中间件,怎么保证顺序性?
面试心得:15 分钟结束。等通知(没戏)
6 北京鑫物(小说 app)
自我介绍一下; mysql 是做的集群吗,主从是怎么做的配置?从服务器几个线程去同步主库的? 联合索引 a b c 怎么生效,ac 或者 ab 生效吗? 你们 jvm 启动参数怎么设置的,大小怎么配置? 怎样让 AB 两个线程交替执行,他俩执行完再让 C 线程在这俩之后执行? SpringCloud 服务注册与发现,底层是怎么实现的,用 netty? 怎么定位服务器的问题,如果内存过大,怎么排查定位解决? 你们是用的自己的服务器,还是买的云服务?项目是怎么打包发布的? 发布到 linux 服务器上,有写过启动应用的脚本吗?
面试心得:20 分钟完,问了现在薪资和期望,然后说等通知! 二面被我拒绝了,感觉距离太远,而且行业方向不对口
7 恒昌利通(小贷公司)
自我介绍; 公司业务模式介绍,做什么业务的,你做哪块的; 多线程的几种实现方式,线程数池的好处,线程池有哪些参数,你们用哪种策略,生产中也用拒绝策略吗? 什么是 cas,cas 会有什么问题,Java 哪些类用了 cas?基本包装类型有用到 cas 吗? 对观察者模式了解吗,项目中怎么用到的? gc 有哪些算法,垃圾收集器,cms 有什么优点? 说一下 cap 理论,Zookeeper 是满足 cap 哪几个点,eureka 呢,nacos 呢? mysql 索引失效场景? 内存溢出有哪些情况?堆内存溢出有哪些情况? mybatis 预编译怎么实现的? mybatis 怎么防止 sql 注入? Redis 数据类型? Redis rdb 和 aof 的区别? Redis 缓存穿透 击穿 雪崩? Redis 分布式锁有哪几个参数? Redis 分布式锁怎么进行锁续期? Redis 实现分布式锁 和 Zookeeper 实现分布式锁有什么区别? Zookeeper 抢占分布式锁,如果 5 个线程去创建节点,如果第三个线程挂了,影响后面的线程吗? Java 守护线程的作用? spi 机制了解吗?
面试心得:聊了一个小时左右,答的也不是很好。然后过了初试,约了复试时间;公司地址: 北京市朝阳区华腾世纪总部公园 E2 座 3A 层(地铁四惠东站 B 口出,导航至华腾世纪总部公园南 2 门)
8 致远互联(协同管理软件)
自我介绍; cas 自增 和 Synchronized 自增 谁快 ? synchronized 和 ReentracLock 哪个快,为啥? Spring 和 SpringBoot 的区别,是什么? SpringBoot 用的是什么概念去实现的,他是用的什么思想去做的? 如果让你实现一个 SpringBoot starter,你应该怎么做? SpringCloud 用过哪些组件 ? rabbitMQ 实现机制,了解吗,为什么这么快? mysql innodb 索引失效场景 你项目里面的东西,哪些可以值得拿出来说一下? NIO 了解吗? Jdk1.8 默认 JVM 的参数
面试心得:让我等了 20 分钟才进来,面试问一堆我不会的东西,面试也就问了 20 分钟,没戏等通知。
9 拉勾网(招聘网站)
自我介绍; 用过哪些集合,怎么理解; Hashmap 的底层实现,是线程完全吗,为什么? ConcurrentHashMap 怎么实现的? 对 Volatile 和 Cas 怎么理解,Synchronized 呢? MySQL 的三种日志分别是什么,undolog 怎么实现事务的? MySQL innodb 的数据结构,B+tree 和 B-tree 的区别在哪里,数据是怎么存储的,数据页的概念是什么 ,页是连续的吗?B+tree 的非叶子结点存的什么?
面试心得:20 分钟完成,答的不好,说等通知没戏!
10 视联动力(视频通信软件)
你做了这么多年开发了,项目里面有什么值得拿出来说一下的?比如复杂的业务或者复杂的技术问题? 分布式事务,什么场景用,为什么用,你用的 hmily,那么用过 seata 吗,seata 支持 tcc 模式吗,分布式事务会出现一些什么问题? 讲一下单例模式,为什么用 double check 的方式,为什么会用 volitale; 看你简历写的,排查过线上问题排查,你是怎么排查定位的? 看你简历写的,修复过宕机问题,是怎么定位修复的? 除了单例模式,其他设计模式,你结合你的项目,怎么用的,为什么会考虑用到设计模式,带来什么好处,能讲讲吗? 分布式锁怎么用的,Redis 用分布式锁会有什么问题? 你用分布式锁,都在哪些场景下用到的? 说下你对 cas 的理解,可能会有什么问题,除了 AtomicReference 还有什么方案能解决 ABA 问题? Redis 常用的数据类型,在哪些场景下用到 Redis,有复杂一点的场景吗? Redis 怎么实现发布订阅的功能? MySQL,有一个长事务挂起很久了,怎么去查看杀掉? MySQL 表的数据量达到一定规模,比如几百万条,如果 insert 比较慢,该怎么排查解决?是数据量的问题,还是其他问题? SpringCloud nacos 注册以后, 是通过怎么去调用服务的? 怎么去解决接口的幂等性问题,如果数据库里面没有唯一主键? 分布式锁实现业务幂等?
面试心得:
一个小时结束,聊了很多,对方语音听不太清,面试效率不是很高; 今天面试被 PUA,说我能力不行; 工作这么多年了,很多深层次的东西不了解,给我提建议,让多总结多学习,给我说大数据量情况下,sql 优化、设计模式、分布式组件、大有可为,呵呵哒!
11 壹码科技(食品检测设备)
自我介绍,哪个学校,哪年毕业的,是不是统招本科? 为什么来北京,接下来怎么考虑职业规范、发展; 接下来怎么考虑职业发展,行业方向,主要做什么考虑; 在之前工作中,有没有感觉相处不愉快的事情,感觉公司有什么不合理的制度吗? HR 开始介绍自己的公司规模; 数字化工厂事业部,纯软件方向; 主要是做企业管理系统,二次定制开发; 问了薪资多少,是否能够提供流水,期望薪资多少; 社保公积金缴纳比例多少; 后续有需要,技术部门再找你沟通;
面试心得:浪费时间,估计就是 hr 忽悠我,不想面试了。
12 某基金公司
聊天式面试主要问我们公司是做什么业务的; 自我介绍,挑一个你认为你很成功的项目来说一下; 说一下你常用熟悉的集合,讲一下区别,hashMap 不同的版本有什么区别; Redis 常用的数据结构有哪些,怎么用的? 看过 mybatis 源码吗,最近有在学什么新技术吗? mysql 数据量表大了,上千万了,怎么优化; 怎么优化查询 sql 语句; Redis 如果是集群,有没有缓存丢失的情况,脑裂是什么; Redis 缓存击穿怎么避免,你是用布隆过滤器怎么解决的? 选择设计模式,是怎么考虑的?实际项目中怎么用到的?
面试心得:50 分钟左右,面试的整个过程,不是很难,一面应该通过了,面试官问了期望薪资,我说期望年 xxx,面试官说现在行情不好给不到这么多,问多久能到岗,同时约了下周三复试时间
13 新东方前途(出国咨询)
自我介绍、系统业务逻辑介绍 为什么 3 月份到现在,还没上班? 然后介绍他们现在想做什么系统?
面试心得:这边他们只想做一个手机号匹配的,类似用户中心管理系统页面的功能,工资低,18~22k。系统也很简单,这次线上面试我的还是个用户中心的系统用户,都不是技术,还想约线下面试,浪费时间,已拒绝。
14 中关村科金(数字科技)
自我介绍,挑一个你最熟悉的项目说吧,然后用了哪些技术栈,你对哪块技术熟悉? HashMap 初始容量大小是 16, 扩容加载因子 0.75。如果容量到 12,肯定会扩容吗? 线程池拒绝以后,如果这个任务很重要,该用什么策略,接下来该怎么办,直接丢弃吗? 微服务你们怎么用的,用到哪些组件? jvm 参数怎么设置,怎么排查 jvm 的问题? 如果系统访问变慢,你怎么排查问题,链路追踪用过吗? mysql 两个字段,id name socore ,怎么取 score 前 3 的?如果第三个 socre 有重复的,怎么取 score 排名前 3 所有人的名字? Redis 怎么实现轮训,你用哪些数据结构可以实现,或者其他的你用什么算法实现? mysql 查询怎么优化? nacos 服务调用,怎么实现 cp 和 ap,ap 是默认的,那么 cp 模式呢? nacos 怎么实现的动态配置,底层原理怎么实现的? gateway 网关,你们后面配置的转发,分内部和外部系统吗? feign 用过吗? k8s 容器 了解过吗? nacos 配置文件的格式有哪几种知道吗?.yml 或者 .properties nacos 动态服务注册怎么实现的; rabbit mq 怎么保证不丢失? rabbit mq 多个消费者 A、多个生产者 A;如果我 A 发送消息给消费者,需要告诉 B 停止处理消息,该怎么做? mysql 行锁和间隙锁了解吗? 线上如果内存过大或者 cpu 占用多,你该怎么排查?
面试心得:很多细节不会,有点懵的感觉。面试了一个多小时,一边面试我一边告诉我答案,他们技术用的比较新,jdk 17 + SpringCloudalibaba,等通知!然后过了一会 hr 居然还约了时间二面;
15 卓望(移动子公司)
1、你对 g1 收集器了解吗,他的好处知道吗?
回答:用分区弱化了分代的概念,强调 garbage first,需要回收时才回收的优先原则,通过卡表维护记录回收了哪些内存块区域,可以通过 MaxGCPauseTime 控制最大回收时间,提高系统响应时间,系统吞吐量;
又问,那他的 MaxGCPauseMillis 是怎么控制实现了解吗?
没答上;
2、你们用的什么 jdk 版本,你用的收集器是什么?这收集器会有哪些缺点,实际场景中都遇到什么样的 gc 问题,你们 jvm 参数是怎么配置的?
答:用的 jdk1.8 版本,收集器是 CMS+parNew ,讲了一些堆栈参数配置,比如系统内存是 6G,--Xmn 4g ,-Xmx 4g ,-Xss 512k 的设置, -Xmn 和-Xmx 最好设置成一样大,避免内存动态扩展震荡,导致多发生一些不必要 gc 问题,用 cms,会有内存碎片化问题,可以通过两个参数开启内存碎片化整理,多少次 fullgc 后整理一次碎片,gc 中的 Promotion Failed 问题,Concurrent Mode Failure 问题会导致最后用 Serial Old 单线程回收;
还讲了代码编写不规范,比如查询整个表里面数据不分页直接放到 List 集合中,如果条数过多会导致内存溢出,FileInputStream 操作文件流使用后没有在 finally 中释放资源,导致内存泄露;update sql 语句,使用索引不规范导致锁表,其他 update sql 同样表的线程等待释放锁,整个请求链路都变慢,内存无法释放,导致内存溢出的问题;
追问:你们系统内存是 6g,当时设置堆内存大小,比例是怎么考虑的?
没答上;
追问:如果你应用内存过大,或者 cpu 占用过多,你们是怎么排查的?
答:用 top 命令,shift +p/m,可以切换查看使用最大 cpu 或者内存的进程 pid
3、juc 包 concurrenthashmap 里面用过吗,1.8 是怎么实现的,
回答:1.8 升级了,锁的粒度更细,使用 synchronized+cas,synchronized 锁住哈希冲突的数组中头结点;
又问 cas 是用在哪里?你认为 Synchronized 锁住哈希冲突的头结点以后,就不需要 cas 操作了吗?
cas 是用在哪里没答上,然后我说 synchronized 锁住哈希冲突的头结点以后,应该不需要 cas 操作了,因为此时单线程操作安全了;
4、程池中 execute 和 submit 方法有什么区别?
回答:一个是提交 Runnable 参数,一个是提交 Callable 对象参数,其中 Callable 有返回值;在 execute 方法中提交 Runnable 任务时,后台有 RunnableAdapter,其实是把 Runnable 转换成 Callable 执行,这里用到了适配器模式,只不过 execute 方法的返回值为空;还有通过 submit 提交的方法,后续用 Future.get 阻塞获取执行结果,并且异常需要提交任务的线程自己处理;
又追问:submit 方法提交的任务,如果发生异常需要调用者自己处理,这块后台是怎么实现的?
没答上!
5、Redis 分布式锁,你们怎么用的,有哪几个参数需要设置?
回答:五个参数,key 锁名称,requestID 客户端 id,NX(SET_IF_NOT_EXIST),PX(SET_WITH_EXPIRE_TIME),expireTime(超时时间),因为哪个客户端请求的就哪个释放,避免死锁,所以有这几个参数;
又问:你们生产用的什么样的分布式锁?
答:用的 Redisson,因为用 jedis 实现分布式锁,很难解决锁续期的问题,在超时时间内如果 A 客户端没有执行完任务,锁被超时释放了, 次数 B 客户端就获取了锁,那么就会出现问题;
又问:如果你们用 Redisson,在 Master 宕机以后,slave 没有同步到分布式锁,这个问题用什么方案怎么解决?
没答上!
6、MySQL 字段 char 和 varchar 有什么区别?
回答:char 不可变,当字段长度确定固定后,用 char;varchar 可变的,字段长度不确定用 varchar,会多一个字节存储长度
又追问:除了这个,还有其他区别吗?
没答上,此时我反问他:那请问你知道还有什么区别吗?
他回答:当你使用 varchar 时,如果用了 modify column 去把列修改成 char,会产生内存碎片空间
7、你们 mysql 用了集群吗?
回答:没有,我们用的主从同步,master/slave,主库开启 binlog,采用 row 行同步方式,主库一个线程去写入 binlog 里;从库一个线程从主库的 binlog 同步到本地的中继日志,然后再用一个线程从中继日志同步据到本地数据库数;(因为之前其他公司被问到过主从同步用了几个线程,当时回答只有一个线程,答错,后来百度搜了下明白了;也不敢说用过 mysql 集群,因为按照他的提问方式,如果说用了,感觉他会继续问涉及到备份、读写分离、数据一致性问题,怕回答不好露馅)
8、你刚才说到了 binlog,那么 redolog 了解过吗?
答:redolog 好像是用做数据恢复的(答错),面试官纠正,是用来做事务持久化用的;又问:那么为了保持事务和数据一致性,redolog 和 binlog 他俩是怎么做到同步的?没答上,这问题一点不会;
9、你们消息队列用的什么,Kafka 和 RocketMQ 用过吗。你用的 RabbitMQ 是吧,那讲讲怎么保持消息顺序性!
回答:RabbitMQ,生产者是通过交换机塞入 quene 中,你可以用 direct exchange 模式,指定 routingkey 绑定 quene, 生产者往队列里面塞,消费者用单线程消费,消费完一个,给生产者 ack 确认机制以后,再继续消费下一条;又追问,如果消费者端用多线程消费,就没办法保证顺序性了吗?没答上!
10、RabbitMQ 怎么保证不重复消费?
回答:因为有时候由于网络故障,导致了消息重发的问题,队列中可能产生重复的消息;如果消息队列是一个类似 insert 数据库语句的操作,那么可以通过数据库唯一键来保持插入不可重复;如果不是 insert 语句操作,可以通过借助 Redis,消费者端接受到消息的时候,先往 Redis 里面 set key,后续每次消费的时候,都先从 Redis key 里面 get 一下,如果有这个 key 了,那么就不消费了;
11、Rabbitmq 死信队列,你们是怎么处理的?
回答:专门用一个消费者线程,去绑定死信队列 quene,消费死信队列的消息;
12、你们之前的系统,有用过微服务吗,SpringCloud 这块?
回答:用户中心改造过,nacos 用来做注册服务,gateway 用来做登录权鉴,验证 token 的操作。
13、那你们用 SpringBoot 这块,starter 流程是怎么实现的,能讲讲吗?
答:通过@SpringBootApplication 组合注解,run SpringApplication 类启动的;@SpringBootApplication 是组合注解,里面有@EnableAutoConfiguration 和 @Configuration 组合起来的,其中@EnableAutoConfiguration 是开启自动配置,里面还有一个@Import 注解 ,在 AutoConfigurationImportSelector 类里面会调用 loadFactoryNames 方法,加载你 starter 的 jar 下 META-INF/Spring.factories 这个配置,然后这个配置文件里面,配置了一些你这个 starter 需要用到的类,比如很多行 ..* = ... ,然后这些类都被当做组件加载到 Spring 容器中,直接提供给用户使用;
14、分布式事务有了解吗?
答:我知道 Seata 分布式组件,支持 xa 模式和 tcc 模式(答的不全,还支持 AT(默认)、Seaga 模式) 追问:那你们的系统,是分布式的,还是单体多机的模式 回答:用了单体多机模式;
15、我看你简历写了分表处理几千万黑名单数据这个,是用的分库分表吗?
答:只是分表没有分库,按照黑名单数据,里面身份证地区代码开头做区分,往对应不同的表前缀存就行了;
16、那你们的系统都没有用分布式的吧?分库分表这些也没用到?
回答:是的
17、你还有什么想问我的吗?
我问他:你们技术栈:他回答:我们主要用 SpringCloud 微服务这块,中间件 kafka Redis,MySQL 分库分表;
面试心得:问答环节一个小时,前面的问题,80% 还是基于你简历写的技术栈去询问沟通,有些回答上了,有些没回答上;最后问的这两个问题,感觉对方应该主要是分布式微服务这块技术栈,可能经历不太匹配。就我目前了解到的那点微服务的技术,也不敢说自己用过分布式,不然他应该会追问你服务怎么拆分的,分布式场景下的一致性问题等等这些!如果要投,有分布式微服务要求描述这块的岗位,感觉还是得再学一下,再融合到自己项目中去;这次面试,也是说等通知,应该没戏了!
16 某基金公司复试
自我介绍:挑一个你最熟悉的项目说吧,然后用了哪些技术栈,你对哪块技术熟悉? 你工作这么多年了,解决过哪些复杂的问题,系统设计上的问题,还是生产中处理过的问题,说一下? RabbitMQ 死信队列了解吗,怎么处理的? 中间件用过哪些,Redis 怎么用的,说一下场景? 你生产处理过内存宕机的问题对吧,当时怎么分析解决的? FullGC 的情况说一下,怎么排查解决的?
面试心得:二面应该是通过,问的不是很难,之前整理过的问题都答上了,整个过程 20 多分钟,约了下周 HR 三面
17 中关村科金复试
自我介绍; 微服务你用过哪些组件; 系统上的这些中间件环境你搭建过吗; 多久能到岗; 介绍了下他们是做音视频开发的,产品需要部署到客户现场,需要驻场部署。
面试心得:问了多久能到岗,是否接受驻场,可能双方没有意愿吧,我嘴上接受驻场,但是感觉还是有点不太想去,对面听出我的口气,最后也没给我 offer;
18 和迅网(财经咨询)
说一下 cas 和 synchronized; 用过哪些锁你都说下; 介绍公司业务模式,系统业务流程描述,以及你用过哪些技术; 介绍一下你们的系统吧,支付这块是怎么实现的? HashMap 扩容以后,数组下标会变吧,扩容以后,如果再去 get,获取数据的时候,这个哈希值变了吗? 说一下你知道 SpringCloud 组件,知道哪些都说出来?然后用过哪些? 你们微服务这块,怎么做的?具体的实例,是怎么部署的,多台吗,然后怎么做负载均衡的? Redis 用过哪些数据结构? 消息队列用的啥? mysql 分表处理几千万数据,怎么处理的?
面试心得:30 分钟挂。
19 恒昌利通现场复试
面试地点:华腾世纪公园 E2 座 3A 层
1、本来是现场技术总监二面,领导开会让我等了 20 分钟,估计还得等;
2、所以 hrbp 先面了,先聊了一会儿,问到我毕业时间,是不是统招本科,空档期在干嘛,现在有 offer 吗,2011 年毕业,2013 年才参加工作,当时为啥。2013、2015 的时候离职原因是啥?
(我内心:现在不都 2022 年了吗,还问 2013 年离职原因) 问了现在薪资和期望薪资待遇的情况,我说期望多少,她说高了肯定给不到,现在行情也不好;给我介绍了他们公司的几条业务线,消费贷,汽车融资租赁,房抵贷渠道,然后还有自动货柜出售商品业务;公司有上万名员工;(当时我看他们这层楼人都不多,而且办公环境也不好,有点质疑心态)
3、hr 问我上家干了这么多年,有哪些成长;
我:说学了一些新技术,学会了金融业务。我大概讲了一下。她又问我怎么用新技术去解决问题的,我说你懂技术吗?她说懂,让我讲给她听;然后我开始讲生产中处理过的比如内存溢出、宕机,讲到一半说到细节,她听不懂了,被喊停。后来开始聊其他的,聊了几分钟;问我对项目做过哪些复盘,你的整理总结文档输出沉淀有哪些?有没有团队分享?我说我有记录总结博客,需要把博客地址发给你看下吗?hr 还是把刚才的话题谈回来,问我解决过哪些问题,有哪些成长?然后我盯着她(内心:刚才不是给你讲了吗,你不是听不懂还问?), 她就反问我道:我说的不明白吗,问题描述不太清楚吗?(内心很无奈:现在 hr 也这么装吗,是显得在公司做 bp 有更高价值,都开始问候选人技术问题了?) 我继续跟她扯,打算敷衍一下;前面扯完了,说到薪资结构,14 薪,会在 offer 里面体现;然后社保公积金基数,只按照 8k 缴纳;
4、技术总监来了,上来让我自我介绍,让我讲了下上家公司的业务模式、项目流程;
5、你解决过哪些问题?我然后就说了还是刚才内存宕机的问题。
追问:如果你感觉你的系统有内存溢出,但是不用 jmap 命令做 dump 也不用 JVisualVM,怎么去排查?我答不出来。
6、做过哪些优化,我说了 MySQL 查询,一个大表用 limit m ,n 优化的场景方案;
7、MySQL 是不是做的集群,怎么保证高可用;
8、然后给我介绍了他们的系统,说进来以后会干什么,感觉有点含糊,具体到哪个组做什么业务也没说,问用哪些技术栈也回答的很含糊,说什么新系统老系统都有
(内心:技术管理可能混乱,项目杂不规范)
面试心得:
对 hrbp 印象不好。盘查户口式的问,感觉都是一些官方套话,没啥实际意义。他又不能决定最终面试结果; 有可能会通过,有可能通不过,感觉过了也不想去,薪资不行,公积金也低,项目成长也不行。虽然现在一直没工作,行情也不好,找不到好的;但是也不想去。
20 驰骛信息(DMP)
你简单介绍下自己业务模式、工作经历,用过哪些技术栈; 你们 git 分支是怎样做的,上线是怎么操作的; docker 容器用过吗,搭建过吗; 平时线上怎么排查日志的,直接通过 docker 还是? 用过哪些微服务组件; RabbitMQ 有哪些场景可以用?怎么保证消息不重复消费? MySQL 你们怎么优化的? b 树和 b+ 树有什么区别 聚簇索引和非聚簇索引的区别 JVM 类加载,双亲委派为什么?
面试心得:20 分钟结束,挂!但是等了两天又通知线上复试。
21 某基金公司 HR 面
你先自我介绍自己? 你为什么离职? 你这些年,在上家公司干这么久,你的成长,在哪里? 你遇到过最大的困难是什么,怎么解决的? 你这几个月空档期,除了家里有事,还干了什么? 你期望薪资多少?要了 xxx。 你还有什么要问我的吗?
HR 介绍自己公司待遇。Base*12 + 4 (16 薪),全额五险一金 面试心得:20 分钟结束,等通知(后来询问得知面试挂),应该 是面试薪资要高了,一面的时候,面试官就说过这个问题,觉得技术要求达不到这个阶层吧,而且现在大环境不好,降薪的也很多。
22 成丰快运(物流)
简单自我介绍 挑一个你熟悉的技术栈,你认为你哪块熟悉或者擅长? 你们的系统有多少用户,有没有高并发场景,怎么解决的? 你有过哪些性能方案优化或者代码上的优化场景吗? 你们项目团队有多大? 问了期望薪资,我说现在多少,期望年 xxx 左右就行。他说到底是左还是右?我说当然右更好了
面试心得:20 分钟结束,等通知没戏了。破拉煤物流公司,还玩什么高并发,呵呵哒。
23 驰骛信息_复试
Java 异常体系; 多线程怎么用的; 过滤器和拦截器的区别和使用场景; mysql undolog、redolog、binlog; git 分支你们怎么管理的,git 命令; 说一下 Synchronized 和 Lock 的区别; MQSQL 索引怎么优化; RabbitMQ 几种 exchange 方式; RabbitMQ 怎么做到消息不重复消费; linux 替换文件的几种方式; 说下查看 jvm 参数; JVM 命令启动参数; docker 和 k8s 有了解过吗; Redis 用了哪些数据结构,场景。BitMap 用过吗。
面试心得:50 分钟。问了期望薪资,我说 xx,估计对面嫌高了,又问能否接受加班,我说短期加班可以,长期 996 吃不消。
24 某银行科技子公司
你们的请求报文是怎么样的,报文格式、长度? https 证书怎么加密的, 证书怎么生成的; SpringCloud 用过哪些组件; feign 负载均衡; 分布式事务; 怎么线上排查问题; mysql 悲观锁 乐观锁 怎么实现; mysql 慢查询,优化方式; 如果系统宕机,你怎么分析,怎么去 dump 文件,解决; SpringCloud 降级 限流 负载均衡这块怎么做的; 还问工作这么久了,带过团队没有。
面试心得:30 分钟。找人内推的,等待通知;
25 某小贷公司
放款对账出现过哪些问题,什么原因?怎么解决的? 计息方式有哪几种?等额本金和等额本息的区别; jdk 1.7、1.8 区别; io、nio、bio 区别; Java 动态代理怎么实现的; Spring bean 的作用域; mybatis 和 Hibernate 区别; 前端 xss 攻击和 csrf 攻击 怎么预防; 有这样一个场景。比如用户还款日,最后一天,本来还钱了,然后由于系统原因,代扣接口失败了。然后第二天,给这个用户产生了罚息,这种情况应该怎么处理? 我需要生成一个分布式 id,要看到业务含义和自增数量。业务这边需要包含商户号,每个商户不一样,每天的日期需要包含在分布式 id 里面,而且每天有流水千万, 可能并发的时候高达几十万数量,怎么去设计这个分布式 id。
面试心得:50 分钟,主要是业务问题答的不好。HR 晚上通知挂。
26 某银行科技子公司复试
你学校是什么?2013 年之前的项目经历是什么?你不写,怎么根据你的级别,给你定薪资呢? 讲讲你们以前的业务模式?放款的钱,怎么确保钱能打给学生,是用于培训的? 你从 0 到 1 的那个系统,是怎么做起来的,那个系统,流程中哪些账户? 你认为你的优势在哪里,能给我们公司带来什么? 你的微服务是怎么拆分的? 你还有什么想问我的吗?
面试心得:面试聊了 40 分钟左右,说薪资只能跟之前持平,不能涨薪这样子。
27 某银行科技子公司
自我介绍; volatile 关键字起到什么作用; MyBatis 平时怎么用的,有哪些好处,List 参数怎么传的? MySQL 优化案例; 你的摄像头,怎么有点暗呢? 你三月份离职到现在都没工作,你是不是有点任性啊?
面试心得:面试聊了 30 分钟左右,咨询内推人员,一面通过,等待银行内部员工进行二面复试。
28 重庆荆棘鸟软件
请自我介绍(上来就是 hr 面,灵魂拷问开始) 你 2013 年离职原因是什么? 你觉得你遇到的最大困难是什么,是怎么解决的? 你之前在工作上经常感到有压力吗? 你如果在工作中,跟别人发生分歧,你该这么做? 如果产品或者用户提出来需求做不了,你该怎么办? 你跟领导曾经有没有过发生分歧不同,是否要坚持自己的方案? 如果有一个分工任务,你的同事不愿意配合完成,他什么都不想做,甚至就是不愿意工作,你应该怎么办? 如果分给你的开发任务,你完成了,别人的任务还没有完成,你应该怎么办? 你曾经帮助过别人吗,是否经常在小组里面帮助人? 你们的绩效是怎么打的,是否有过被扣绩效的情况,为什么? 你今天有一个需求需要上线,而同时生产出现了一个 bug 你该怎么做,哪个优先级高? 你做过需求分析这块吗? 如果你参与别人的会议,遇到一个自己觉得好的方案,是否会提出来让别人按照你的去做? 你觉得你最大的缺点是什么? 你在生活上或者工作上遇到过最大的挫折是什么? 你对加班怎么看?(然后介绍了他们公司的一些加班情况) 问完这些还不够,后面还发了一个链接,让做 30 分钟的性格测试,服!
下午 17:00 技术经理开始面试:
说一下 JVM 内存结构; 有没有用过 JNI; 音视频这块东西,做过吗,对音视频 SDK 了解吗? 内存溢出有哪些场景,怎么排查的,怎么解决? 你们日志是用的什么,怎么分级打印的? 代码测试这块用过吗,代码测试覆盖率怎么做的? 对 http,tcp/ip 熟悉吗,用过一些抓包工具分析没有? UML 类图画过吗? 我们的音视频服务,是用的开源的,如果让你学习一项新技术,你应该怎么做?
面试心得:搞笑 hr,灵魂拷问呢,工资低,加班也不少。
30 某民营银行
自我介绍; volatile 关键字用处和场景? 你拆分大文件,思路是什么,代码还是 linux 拆分,哪个效率高? 如果要多个文件合并成一个文件,怎么办,有什么方式提高效率? 你分表处理几千万黑名单数据,是怎么做的? 你用过分布式组件吗?分布式事务 Seata 的 AT 模式有什么问题? 你系统宕机,当时是怎么分析定位问题的? linux 怎么会杀掉你的进程,你们系统内存多少,JVM 启动参数怎么设置的,为什么申请虚拟内存会超呢? 如果你的系统是集群的方式,那么定时任务这块,怎么保证一个应用跑? 另外一个业务面试官,就问了一个业务问题:我看你简历上写的账单、台账、还款单据,你能分别解释一下这三者的含义吗? 你三月份离职到现在都没工作,为什么?
面试心得:面试聊了 30 分钟左右,一面通过,说等待一周内会进行二面复试。
参考答案
这里就不贴参考答案了,需要参考答案的朋友可以在下面 3 个资料中找到:
Java 面试题&面经汇总 《Java 面试指北》 JavaGuide 在线阅读网站:https://javaguide.cn/
写在最后
在没有同行业经验的情况下,面试官基本会死磕技术,因为讲业务他听不懂。所以建议技术人在 30 岁以后最好立足于一个行业,不然面试真心太难了。
········· END ··············
👉 欢迎准备 Java 面试以及学习 Java 的同学加入我的知识星球,干货很多!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。
👉 《Java 面试指北》持续更新完善中!这是一份教你如何更高效地准备面试的小册,涵盖常见八股文(系统设计、常见框架、分布式、高并发 ......)、优质面经等内容。
近期文章精选 :
《JavaGuide 面试突击版》 5.0 最新版下载 Nacos 2.2.0 正式发布!新特性很香!! 新来了个同事,设计模式用的是真优雅呀!代码如诗!! IntelliJ IDEA 2022.3 发布,这次不追了。。。 8.8k star,这可能是我见过最强的开源支付系统!! 科大讯飞 Java 后端 SSP,拿下!!
👉 如果本文对你有帮助的话,欢迎 点赞&在看&分享 ,这对我继续分享&创作优质文章非常重要。非常感谢!