文章目录
面试经历
在2020年7月底裸辞之后,我在整个八月份开始放飞自我,每天除了花两个小时看一下java后端开发的基础知识点之外,剩下的时间全部交给了手机游戏。
接着在9月初,我开始修改简历,开启了我的找工作之旅。可能由于学历还算不错的原因(硕士),修改完简历之后,有很多猎头给我打电话,给我推荐简历,简历通过筛选之后,就安排笔试和面试。9月的中间两个星期,我几乎每天都在面试(视频面试 + 现场面试),然后晚上的时候做企业发过来的笔试题,还有时间的话就刷刷leetcode上面简单的题目。下面就是这两周的面试过程,我简单讲下。
叽里呱啦
面试形式是线下面试。作了简单的自我介绍后,面试官直接把电脑给我,让我写一个LRU算法。。。由于只听说过这个算法,但是不了解算法的实现细节,我挣扎了一会儿后就放弃了。后面回家后查了一下,才发现这个算法写起来真的很简单😭。
其实到这里面试基本就gg了。可能是面试官觉得大老远让我跑过来问了一道题目就让我回去有点过意不去,就接着问了些不痛不痒的题目
问:你了解哪些数据结构和算法?
问:讲一讲JVM的类加载机制。讲一讲JVM的内存分布情况。讲一讲JVM的GC机制。
问:数据库使用了什么数据结构,这个数据结构有什么优点?为什么不使用二叉树?
问:线上发生OOM,如何排查问题?
问:springcloud的配置中心了解多少?用过哪些配置中心,分别有什么区别?
问:springcloud中熔断和限流有用过吗?原理是什么?
问:设计模式有了解过吗?讲一讲项目中实践设计模式的地方。
问:有做过JVM调优吗?怎么做的JVM调优?
平安保险(外包)
这个面试可能是我遇到的最简单的面试了。面试采用视频面试,全程就只问了些java的基础知识,面试了大概半个多小时就结束了。然后第二天通知我面试通过,接不接受offer,啥时候入职。我听到五险一金按照最低工资标准缴纳,我直接说我已经找到工作,不接受这个offer😠。
百盛
话说这是一个零售公司,在招的好像是java开发经理,我也不知道怎么就稀里糊涂的答应面试了。面试采用视频面试,面试的过程对我来说挺痛苦的,面试内容全部集中在业务中,然后还是我不熟悉的业务😭。
问:网关有了解过吗?网关如何做用户身份的校验?
问:并发情况下sql的读写如何处理(话说这个问题我没有搞明白点在哪里😷,然后面试官补了一句,比如多用户同时请求扣减商品库存)?
问:sql优化过吗?举个例子
问:缓存是怎么做的?更新缓存时,先更新的数据库,还是先更新的缓存?如何应对缓存穿透/缓存雪崩?如何应对缓存|数据库不一致的情况?
ebay(外包)
一共三次面试,由于视频面试的原因,一个下午就搞定了。
- 一面简单问了问,比如记忆深刻的bug;做项目过程中遇到的困难与挑战;阅读一段代码指出其中可能存在的问题;一个数组,找出所有三个数相加等于0的组合,要求去充;…
- 二面加大了难度,比如mysql的事务隔离级别;mysql快照读与直接读的区别,可重复读的实现原理;long的赋值操作是原子操作吗,如何证明是否是原子操作;写一段程序,要求实现解一元二次方程(主要考察编程风格,异常处理,变量命名,入参出参的设计等等)…
- 三面问了些基本信息,然后问了一个题目:给定的一个execl文件中含有url和响应时间两列,如何获取响应时间最大的10个url(我后面才了解到,原来这个题目想要考察topN算法😓)
字节跳动
这次是字节跳动教育业务板块进行招聘,简历通过筛选之后,进行了两次面试,都是视频面试,由于大部分问题都没有准备,所以直接GG了。问的问题有点记不清楚了,就大致写下。
- 一面,问:I/O多路复用有了解过吗?介绍一下(复习的时候,以为这个知识点不会考,就没看😅)。手写计数排序;假设当前数组中只有-1,0,1三种数字,如何不借助外部空间,将数组排序
- 二面,问:介绍一下操作系统中的虚拟内存概念;介绍一下三次握手和四次挥手;redis中的数据类型以及底层实现原理;volatile关键字介绍,并介绍如何使用;长度为n的数组,求最小未出现正整数(时间复杂度O(N),额外空间复杂度O(1));一个车次,10个车站,设计一个存储,支持任意两站之间的余票查询和购票操作,要求:一张票对应的座位从头到尾要一致
字节跳动的编码题目相对来说并不难,但是都要求代码可以编译通过,并且正确运行,所以压力还是很大的。
paypal(外包)
简历通过筛选之后,没有直接进行笔试和面试,而是发过来三道编程题目,我花了半天时间做出来两道题目,然后邮件发过去了。接着是一轮电话面试,直接GG。
问:介绍下java的线程状态;字节流和字符流的区别;cookie和session的区别;https和http的区别,https的加密原理与过程,http状态码介绍;equals和hashCode的联系;final关键字介绍;where和having的联系与区别;innodb和myisam的区别,innodb中的锁机制介绍一下;mysql中事务的特性(acid)
问:如何求字符串中的最长升序子序列;长度n,每次走1步或2步,共有多少种组合
交银企服
总共进行了一轮面试,采用的是视频面试。面试过程中主要问了业务相关的一些问题,比如优惠券领取时如何避免超领;并发场景下,如何控制用户领取次数不超过约定额度(对领取过程加分布式锁,同一用户不允许并发领取);线程池的参数详解;跨域问题如何解决;…
本来以为面试失败了,没想到却收到了offer,然后开始走定薪流程。让人崩溃的是,走定薪流程的过程中,填了无数的表格,发送了无数的相关证件截图,然后还要去线下进行一次笔试,以及签署相关的文件。所以在收到了自己的中意offer之后,果断终止了这个旷日持久的定薪流程。虽然自己很好奇会给个什么样的薪水,不过,不重要了,直接翻篇吧。
支付宝
这个是上海支付宝团队的招聘,主要业务是支付宝的生活服务,偏重于业务。很悲催的是,一轮电话面试过后,直接GG。
问:所在项目组的业务场景,以及开发过程中遇到的问题和解决思路
问:看到我之前做过嵌入式软件开发,就问我C和java在开发上的不同点
问:java中反射、代理、注解的底层原理,在实际项目中是如何使用的?
问:乐观锁和悲观锁的优缺点以及适用场景,自己在开发中是如何使用的
宝武工业研究院
一面是视频面试,主要问了问java的基础知识,没什么生僻的知识点。唯一有印象的一个问题是:是否进行过tomcat调优?是如何进行调优的?
二面是笔试。本来订好了时间,准备参加的。不过收到了一个更好的offer,并且查了下宝信软件的基本情况,自己不太喜欢,所以二面就直接放弃了。
摩根斯坦利
进行两次电话面试。二面由于大部分问题都没有涉猎过,所以直接GG。
- 一面。主要问了些基础知识,比如java的八种基本数据类型,4种引用类型,equals和hashCode的联系…。还问了我算法怎么样,我说了解链表、二叉树、堆栈、队列、二叉堆,还有基础的排序算法什么的。然后问我知道动态规划算法是啥不,知道广度优先搜索和深度有限搜索怎么实现不?最后让我用英文做了段自我介绍。
- 二面。一上来就是各种设计模式,自己在项目中应用了哪些设计模式?然后给出了几种场景,让我说一下每种场景用哪种设计模式好一些;问我了解哪些常见的序列化机制?(🥱真的是一脸懵逼,在开发过程中除了用过json的序列化方式,设置一下redis的序列化方式,其他的就不知道了,也不知道面试官想问我什么);介绍一下常用的RPC机制(。。。没了解过,诶)
领猎网络科技有限公司
这个面试是线下面试,当初稀了糊涂的答应下来,到面试的那天天降大雨,我就有点不太想去了,但是答应了又不能不去,心累。
到了之后,并没有太严格的知识点考察。主要是跟面试官聊了聊之前的工作经历,自己的离职原因,当前公司的业务情况。聊完之后,大家都发觉对方不太合适,也就没有然后了。
太平洋保险(总部)
一共四轮测试,第一轮性格测试,第二轮微信视频面试,第三轮笔试,第四轮HR与部门经理面试。
- 一面,性格测试,没什么好说的,就选那种看起来特别正确的选项就好,千万不要按照自己的实际性格进行作答。
- 二面,通过微信视频进行面试,几十个人被拉到一个微信群中,一个一个接受面试。面试的问题都是很奇怪的,比如@RequestMapping的参数有哪些?@Transactional的参数有哪些,分别是干什么的,原理是什么?除了json的序列化方式外,有没有了解过xml的序列化方式?线程池核心参数的介绍。
- 三面,群体在线笔试,又是一次很奇葩的体验。面试官打开一份word格式的面试题目,然后每次在屏幕中展示一道题目,大家做完之后,就由面试官统一翻到下一题。题目的话,就是写sql,看一段程序然后写出输出结果什么的,没什么太大的难度。
- 四面,部门经理和HR同时进行面试。主要是问了问离职原因,期望月薪,然后手里是否有offer啥的,大概持续了半个小时吧,反正我是挺难受的。结束后,HR过了半小时通知我面试没有通过,就GG了。
太平洋寿险
简历通过筛选之后,先做了一份在线的笔试题目,通过之后,给我发来了一个面试官的微信,让我自己与面试官沟通面试时间。。。我觉得太奇葩,加了微信之后一直都没联系面试官。直到有一天面试官问我还面试不,我说我找到工作了😂,然后面试官就把我微信删除了。。。
携程
线下面试。填写完基本资料后,面试官问了我一些基础问题,乐观锁与悲观锁;feign的负载均衡原理;JVM内存区域介绍;类加载机制介绍;事务隔离级别;手写快排;手写一道要使用堆栈完成的编程题目;…。本来说面试通过了,但是领导忙着开会,没时间来面试,就说下次再约。没想到过了几天之后,告诉我面试未通过。。。我一脸错愕的表情,上次走的时候不是通过一面了吗?怎么过了两天,就变成未通过了,真尼玛神奇😺。
兴业金融有限公司
简历通过筛选之后,给我发来一份笔试题目,看了下问题,难度还好。通过之后,我自己查了查这家公司的情况,网络评价有点差,所以HR邀请我面试的时候我就没搭理HR,然后HR很契而不舍的让我参加一下面试,就半个小时时间,很快的,我就答应了。
视频面试的过程简直是个灾难。面试官有点像运维的感觉,问了我很多linux的命令,比如如何查看系统的端口占用情况,如何查找文件,如何删除创建时间大于一周的日志文件什么的,我就说要用啥啥啥命令,但是语法不记得了,要百度一下,很快面试就在不愉快的氛围中结束了。
个人感受
基础不扎实
这次面试经历给我的最大感受就是基础不扎实。我本来以为自己工作了两年,可以独自设计库表结构,使用缓存,sql优化,完成基础功能的开发工作就挺好的了。直到这次面试才发现,自己除了工作过程中涉及到的一些知识点稍有了解之外,对于其他的知识点根本没有过涉猎,很多工具也只是会使用,但是并不了解底层的原理,或者了解的不够深入。
不扎实就是不扎实。虽然毕业工作了几年,但是基础还是要牢牢的掌握住,才能在面试中取得成功。是时候抽空看看计算机网络,操作系统,算法导论…
表达能力差
面试过程中,可能很多知识点都有了解,也大致清楚怎么回事。但是让我在很短的时间内,用几句话简要的总结要点,我就磕磕绊绊了,甚至很多时候说了很多也没说到点子上。我觉得这种情况最亏了,明明了解这个知识点,可是却说不明白,白白浪费了机会。以后如果有面试机会的话,我可能会把一些常见问题列出来,然后整理好答案,对着镜子练习几遍,以达到熟练应对的地步。
算法黑洞
这次找工作的过程中,很多的面试官都抛出了各种各样的算法/编程问题,然而我的回答正确率几乎为0(只答对了携程的算法题目)。很明显,leetcode的题目没刷就是不行。自己以后要开始积累leetcode的编程题目了,以免下一次面试的时候算法的部分被面试官零封。