两年社招后端开发面经
- 前言
笔者在一家国有银行的科技部门干了两年 做的主要是线上消费贷款的后台部分
心想着干了差不多两年 也是时候出来看看机会了
大概是从年初开始准备的吧
准备思路就是三块:0 简历 1 技术(主要是看书)2 项目 3 leetcode(不过社招考察的不多其实) 
简历
简历首先决定了你有没有面试机会 其次还决定了面试时面试官会怎么提问你 我觉得多花些时间在简历上边还是挺重要的,一开始我也是很嫌弃认真写简历,不过后面投多几家石沉大海 你就会知道简历需要好好写了 不过不用指望自己能憋两三天就把简历写出来 可以边面试边改善 这样比较有感觉 也容易技术
因为我是java系,看的书如下:深入理解java虚拟机、redis设计与实现、从paxos到zookeeper、apache kafka实战、java并发编程的艺术、mysql技术内幕。看的时候其实看得也挺快的 主要就是泛泛的看一遍 感觉特别重要的才会比较认真看 也可以先上面对着这几个方面留意一下比较常见的面试题,然后再来有针对性的看书会好一些项目
项目的话 其实就两方面,一方面是你简历上写的东西 对你简历上写的东西要特别熟悉 不然很容易被问穿 这就会有些尴尬 当然如果做的项目确实比较简单 也应该适当包装一下(比如无中生有,不然有时简历关都过不了 不过对于无中生有的部分也需要比较熟悉就是了) 然后工作一两年的建议就别写精通XXX了 我一般就是了解、熟悉;好像跑偏了,除了简历上的东西,另一方面会问你一些有关你们系统的开放性问题,这就需要你平时对你们系统有一些了解,比如你们生产有多少台机器、数据库怎样部署的之类的,这些就需要平时积累 如果平时没积累,就多找熟悉的同事问问(这里要谢谢欢哥,我的面试经理)leetcode
我反正直接躺平 一开始还会每天刷一道medium 后面直接两三天挑一道easy 就保持手感 因为没有面字节 所以以前的老本倒也够用了
接下里就是具体的面经啦 这里按照面试的时间顺序排一下
涂鸦一面
- 1 项目并发控制 updatepdate 0 乐观锁
 - 2 简历ibatis
 - 3 redis哨兵心跳 事务 pipeline
 - 4 数据库全表查询 select * 高性能mysql
 - 5 jvm 栈 垃圾回收 碎片 stop the world
 - 6 内存布局 enum java1.6 1.8
 - 7 设计文档输出
 - 8 学习kafka
 - 9 锁升级 synchronized
 - 10 服务如何开发给第三方
 - 11 接口如何审核 控制第三方调用
 
涂鸦二面
- 聊聊最近一个项目,遇到哪些业务上的难点、技术上的难点,怎么解决的
 - Redis分布式锁怎么实现的
 - Weblogic平时有使用到吗 对tomcat的原理了解吗
 - 对分布式了解吗 分布式需要解决哪些问题呢
 - 最近这两年最大的技术进步是哪些呢 讲讲oracle索引 什么时候会出现死锁呢
 - 对未来的规划是怎么样的呢
 - 有什么想问我的吗
 
涂鸦hr面
- 对公司了解吗 事后有去了解过吗
 - 为什么想离开现在的公司
 - 想去哪些类型的公司 为什么 有什么期望
 - 在工作中遇到最大的难题 怎么解决的
 - 作为技术 最讨厌什么
 - 为什么不想去bat 有和同事了解过吗
 - 对于这个岗位进来要做的东西 了解吗
 - 现在薪资多少 期望薪资多少
 
涂鸦一面的面试官聊得久一些 二面就比较快 hr面感觉和hr不是很对口 后面就卒了 面试反馈挺快的 一般今天面完 第二天就反馈了
akulaku
一面
- Redis为什么不用hashmap
 - 等额本息等额本金的区别
 - 订单库存服务不一致
 - 主键递增
 - 工作流回滚
 - volatile 原子变量
 
二面
- 准入 攻破怎么办
 - redis数据结构 hashmap使用
 - jvm内存布局
 - 什么时候回收
 
hr面
额hr问题忘了 这家因为后边给的工资比较少 所以就没去
平安一面
- 你在建行做的是什么 为什么想要换工作 对新的工作有什么期待
 - 了解过springboot吗
 - 了解springcloud 它的各个组件是怎么样的
 - 了解mybatis吗 它的分页组件是怎么实现的
 - 你用过多线程吗 知道线程池的原理吗
 - 了解hive hbase吗
 - 说出自己的三个缺点 三个优点
 - 最近比较有技术含量的一个项目是什么
 - 一般一个需求下来你是怎么做的
 - Redis有哪几种数据结构
 - Redis数据结构的选取?有什么原则吗
 - 有生产上堆栈分析的经验吗
 - 生产上有出现线程堵塞的经验吗
 
平安二面
- 讲讲你在建行做的什么
 - 讲讲你们的流程
 - 你做的有什么难点吗 你负责的东西是什么呢
 - 你现在还是在做这个吗
 - 你们怎么解决客户额度的问题呢
 - 讲讲你项目里用到的技术
 - 你们数据库数据量大吗
 - 几千万的数据量会有性能问题吗 怎么解决大表关联
 - 讲讲多线程
 - 用过微服务吗 你们服务器扛得住吗
 
hr面
也就是问一些常规问题 忘记记录了 这家也谈完薪资了 应该会去这一家
amber 一面
- 讲讲layer2的实现方式
 - 讲讲arbitrum
 - 讲讲助记词是怎么生成私钥的
 - 怎么把一条链的提现和充值接入钱包
 - 用什么语言写过dapp吗
 - 以太坊地址有大小写区分吗
 - 波场和以太坊有什么区别 为什么波场比较快
 - Btc和以太坊两条链有什么区别
 - 搭建过以太坊节点吗
 - 如果有很多个账户 怎么监听账户的余额变动了
 - Redis机构树在数据库怎么存的 为什么要这么设计
 - 在redis怎么存的 在数据库如何优化
 - 给一个字符串 写出他的全排列
 
amber hr面
- 了解我们公司是做什么的吗
 - 年终考核和绩效挂钩吗 拿了什么 为什么
 - 为什么想要离开现在的公司
 - 为什么对区块链这么有信仰
 - 对未来的规划是什么
 - 可以接受先做开发后面再接触钱包相关的吗
 - 对加班的态度怎样
 - 现在的薪资及期望薪资
 
本来一开始我是最想去这家公司的 但是他们要求有过钱包的设计经验 所以就卒了 不过后面也觉得无所谓了。。。
波场一面
- 讲讲你对区块链的了解
 - 讲讲全节点 轻节点
 - 如果要你设计钱包 你觉得有什么侧重点
 - 讲讲concurrenthashmap如何实现并发 扩容呢
 - 用过消息队列吗 如何防止消息丢失
 - 做一道leetcode题
 - 有什么要问我的吗
 
这一家同上。。。一面卒。
招联一面
- 为什么要离职
 - 期望薪资
 - 讲讲比较有代表性的项目
 - 授信数据从哪里来的
 - 你们贷款流程设计时有什么原则
 - 征信挂了怎么办 怎么优化(一天缓存)
 - 为什么要迁移表 迁移之后数据库压力就解决了吗
 - Redis 数据结构 应用场景 怎么解决并发访问 怎么解决数据一致性 用来缓存什么东西
 - Kafka消息积压怎么处理
 - 了解springboot吗 了解微服务吗
 - 了解分布式事务如何解决吗(二阶段提交 三阶段提交)
 - myisam和innodb的区别
 - b+树索引存储位置 覆盖索引 什么时候走索引比不走索引慢
 - 什么场景下需要用到分布式
 - 不断fullgc怎么处理
 - Jvm内存分布
 - 有什么想问我的吗
 
招联很奇怪 我投了差不多一周 某天周六突然打电话问我能不能面试 然后就当成面了 聊了有四十多分钟 后面就没有音讯了 感觉是刷kpi吧
微众一面
- 讲讲几个项目 你们系统的作用
 - 遇到过你认为的难题
 - 开户阶段就只做了开户吗
 - 怎么协调开户和额度扣减 怎么解决
 - 分布式事务的解决方式
 - 避免出现一笔申请多次推送
 - 工作流出错后不能重复提交 没办法将推送放到后面吗
 - Java线程池的参数 核心线程最大线程 和tomcat线程池的区别
 - Bean的几种初始化方式 默认方式
 - mybatis怎么从一个mapper组装成一个类
 - Aop怎么实现的 有aop不生效的情况吗(独立事务不对)
 - 轮起怎么避免对外服务失败
 - Zk的作用 谁调用zk
 - oracle和mysql的区别
 - Mysql的索引 主键索引和非主键索引的区别
 - 授信编号如何生成的
 - 系统之间的调用通过消息队列吗
 - 你们基于tcp吗 http吗 用的什么http框架
 - 怎么使用多线程的
 - 产品场景很多,针对代码里面大量的ifelse 考虑过怎么优化
 - 单例模式使用过吗 有哪几种初始化方式
 - 什么时候索引失效 为什么这种情况会失效
 - 单索引和联合索引的区别 如何决定采用顺序
 - 查询一定时间段内的流水 如何建立索引
 - 平时有了解什么新技术吗
 - 对于新环境预计多久能上手
 - 有什么要问我的吗
 - 你们加班程度怎样 对于加班怎么看
 - 面试情况 如何考虑
 - 对于微众的了解
 
一面聊得比较久 差不多70分钟 过了一周了 才跟我说他们领导会联系我二面。。。反正现在还没开始 如果有后续我可以补上来。
微众二面
- 简单自我介绍一下
 - 讲讲你负责的东西
 - 授信是怎么计算额度的
 - 你们就负责转发请求吗?
 - 调用第三方接口怎么处理报错的 有没有什么优化方法(异步、多线程)java有没有什么自带的获取结果的方法(future)异步调用如果超时了怎么办(不会了 timer)
 - 你们系统tps多少 每天调用开户次数多少 有多少成功开出来呢
 - java object有哪些方法(hashcode equals notify wait)
 - 你们的开发框架是怎么样的
 - Hashcode 和 equals有哪些区别呢 什么场景下使用呢
 - equals和compareto有什么区别
 - 重写一个对象的hashcode和equals怎么权衡 hashcode一定要重写吗
 - Hashmap的put操作是怎么做的 哈希操作是如何进行的呢
 - 单例模式有哪几种写法(非懒加载、懒加载)
 - 懒加载怎么避免并发问题呢(双重确认加锁)
 - 第一层确认的作用 第二层确认的作用
 - Mybatis什么情况下会sql注入呢
 - 你了解sql注入吗 能不能将一个具体的例子
 - 你们用的是什么数据库 了解mysql吗
 - Mysql的主键索引非主键索引什么区别
 - 什么时候非主键索引不需要回表呢(覆盖索引的时候)
 - 非主键索引什么时候失效
 - 非主键索引A B C,如果A范围查找,B还上索引吗(不会)
 - 你的专业是统计学 为什么想要做开发呢 计算机相关的知识是怎么学的
 - 平时有哪些兴趣爱好
 - 对技术了解如何
 - 现在的面试情况
 - 为什么想要跳槽
 - 有什么想要问我的
 
二面挂了 感觉在技术上还差了一丢丢 需要再积累一段时间
招银技术面
- Stringbuffer Stringbuilder的区别
 - Mybatis一级缓存二级缓存的区别
 - springmvc常用的注解
 - Mysql两个引擎的区别
 - 有jvm调优经验吗 讲讲java内存模型
 - 了解微服务吗 讲讲你对微服务的理解
 - 了解springcloud吗 讲讲你对spirngcloud几个组件的理解
 - 讲讲简单工厂模式和抽象工厂模式
 - 讲讲认为比较重要的项目
 - 主要流程是怎么样子的
 - 说说你们系统的作用 整个交易路线是怎么样子
 - 第三方接口报错怎么办
 - 如果增加了很多第三方接口 怎么保证服务时间不增加 又保证用户体验 可以从技术和架构的角度讲讲
 - 你们怎么协同其他开发中心的进度的?一个需求拿来怎么确保上线时间
 - 觉得最重要的文档是什么?
 - 怎么确保接口文档正确高效
 - 你之前是做数据分析的 为什么现在做开发了
 - 你本科是统计学 那计算机基础有学习吗
 - 现在的offer情况
 
周日做了在线笔试题。。。后面就联系我在线面试 是三个有些年纪的面试官 因为他们问的ssm相关的 我没咋准备,不对 是根本没准备 所以答得不好 卒
腾讯一面
- 第三方调起你们的服务是怎么认证的(appkey 证书)
 - 你能讲讲证书是什么吗
 - 额度数据从哪里来的 渠道怎么区分
 - Redis集群怎么部署的 一条写入什么时候可以当成提交了
 - 全部从节点都确认会有性能问题 怎么优化
 - 了解raft算法吗 它是怎么达到一致的
 - 灰度切换怎么做
 - 了解oracle怎么同步数据到redis吗
 - 了解java的哪些字符串对象 讲讲hashmap
 - springboot的启动流程
 - Mybatis的延迟加载 一二级缓存 $&[的区别
 - 了解docker吗 docker创建镜像什么命令
 - 回滚机制 推送的时候如果涉及多个渠道怎么办呢
 - 项目里面的难点 你负责的内容
 - 数据迁移怎么做的
 
一面的时候我是奔溃的 感觉腾讯问得会比较深一些 碰巧ssm、zk是我的软肋 虽然写在简历上 但是并不熟 加上之前的面试官都没问过我。。。 我进行到后面都想跟面试官说要不今天到这 但是后面居然过了 一面一个小时
腾讯二面
- 做一道链表合并的题 能不能就地算法完成
 - Linux用得比较多的命令
 - Grep怎么高亮
 - linux去重命令
 - 怎么查出哪个进程占用了8080端口 部署在哪个路径下
 - 大学专业 为什么做开发 有学过计算机相关的知识吗
 - 了解进程 线程 协程吗
 - 内核态、用户态的区别
 - 了解常用的加密算法吗
 - 你们项目中有用到加密吗
 - MD5算法是什么加密算法 有公私钥吗
 - 随心贷有什么项目难度
 -  你们银行的服务是怎么控制调用的
二面聊得比较简单 差不多40分钟 感觉面试官就是走个流程吧 二面卒 
蚂蚁一面
- 简单自我介绍一下以及讲讲你擅长的技术
 - 额度恢复扣减是怎么实现的 有了解吗
 - 标准贷款和额度贷款有什么区别
 - 贷款合约表里面有什么字段
 - 快贷里面有多个产品 那是怎么区分的 会不会出现一笔贷款对应多个贷款的情况
 - 第三方场景的准入是怎么做的 他们负责还是你们负责
 - Redis你们用来做什么呢
 - Redis为什么会比mysql快 从几个角度分析
 - Redis上的数据是拿来缓存呢还是就只放在redis上
 - 如何保证redis和数据库的一致性问题
 - 如果redis上三分钟有效期的临时数据在申请过程中过期了怎么办(看门狗)
 - 你们项目中有用到多线程吗
 - 你们有多少台机器 每天的访问量怎么样
 - 如果有很多并发的请求进来 可以怎么利用多线程优化(异步)如果线程队列满了呢?( 消息队列)
 
蚂蚁的面试官感觉挺有水平的 会问你擅长哪些技术 聊了差不多四十分钟 二十分钟项目 二十分钟技术 你答不上来也会引导你 是我这次面试体验里边最好的了 一面应该是过了 看面试官什么时候联系我二面 有后续的话我可以再更新
蚂蚁二面(十八分钟)
全程问项目。。。
不出意料 挂了 经验尚浅 同志仍需努力!
总结,最后再随便唠叨几点
1 我是裸辞的 就是提了离职才开始找工作的 对于那些很讨厌自己一个人待在家里的人非常不建议(比如我)但是其实也可以尝试一下 嘿嘿 毕竟也算比较新奇的体验 反正就是要考虑清楚啦
2 面试的时候最好从难度简单的开始 一开始就大厂 容易把自己搞自闭 而且浪费机会 就是循序渐进
3 面试后最好做一下记录 至少要复盘一下自己答得不好得 去弄明白 很大概率下个面试官还问。。。
4 面试其实也是个展现自我的过程 就是和面试官的沟通和交流也挺重要的 答不上来也没啥 但要让面试官知道你比较努力。。。(这一点面几家就会有感觉了)
5 社招和校招还是不太一样的 社招背景契合会更容易进一些 背景不契合,比如区块链那些都是一面卒 自动驾驶直接简历关都没过。。。 对自己的职业规划要有点B数 虽然也不一定会一直当打工人
6 就是要广撒网 这样才会心态平和 不会患得患失 如果很自闭 就休息休息 或者找朋友倾诉倾诉 然后继续战斗!
7 关于面经 其实我是在准备阶段 就是几个月前看了几篇 开始面试后一篇都没看过。。。这个仁者见仁 智者见智 不过我的面经还是可以看一看的 嘿嘿(觉得自己好有文采.jpg
最后的最后 祝大家可以拿到自己心仪的offer!!!
7.7更新 大家有问题可以评论区留言 我一天会看一两次 有可能回答的我就会尽量解答
7.10更新 更新了微众二面和蚂蚁二面 最终决定去平安啦 完结撒花!后续就不怎么会看帖子啦

查看17道真题和解析