关于春招的一堆凉经
渣渣的自我介绍:四川某双非一本院校计算机类学生。从18年4月进入学校一个本科实验室(下称团队)开始学习Java,同年11月份开始接手一些团队自用的项目(团队成员管理系统)。后边担任团队队长,接手很多外包项目,但能写在简历上的不多,只有一个油田的项目、自己搭建的个人博客还有一个微信公众号。19年代码产出5w+(春招面试的时候也没有啥亮点)
今年4月开始准备走春招找暑期实习。现在想想自己心是真的大,4月13号boss直聘上边收到一个阿里师兄的内推邀请立马就投了,那时候还没准备任何东西(HashMap底层都没看过的程度),到21号收到人生第一次面试(阿里乌鸫),下边跟大家分享一下我的春招凉经
阿里乌鸫
一面
自我介绍+项目(20m) 项目问的比较深,自己扯出来的项目难点,面试官人很好,问问题的过程中还会提出自己的一些想法。根据项目引出了mysql和redis读写不一致怎么办,全文索引。Mysql事务隔离级别Spring IOC(说一下两种实现方式,问到为什么不能代理有final修饰符的类)HashMap 结合jdk1.7,1.8说一下底层结构、get过程ConcurrentHashMap(结合jdk1.7,1.8说一下底层结构)volatile关键字JVM内存结构垃圾回收算法(为什么老年代和新生代不同)面试官介绍了下公司还有什么想问我的吗?身边还有跟你技术差不多的同学可以介绍的吗?
二面
自我介绍为什么开始学Java,学习Java的契机学习Java这两年,包括后边框架什么特性对你有很深的印象或者帮助(Spring Aop)AOP除了日志和权限控制常规用法以外,你还了解什么高级功能(Spring 事务的声明方式)看Spring源码看了哪些(aop、ioc、bean的生命周期)看了源码之后最大的感受实际上有用到这些源码层次的吗介绍一下对自己比较重要的项目(油田修复井专家系统,7个人做项目、2后端、3前端、2UI)项目前后端分离的架构(端 springboot+mybatis基础框架、spring security+token 身份鉴别,前端React)为什么选用springboot+mybatis(学习路线这样)整个设计是你设计的吗。整个设计最大的亮点是啥(前后端分离,我用swagger-ui+内网穿透让暑期一些同学回家也可以写项目【新疆同学比较难操作】)有实际交付给用户吗(还在加功能、也差不多了)。有考虑过交付之后的容量吗(没有…以前项目比较小,后边打算所有功能实现之后测一下,大佬让我提前测一下)新老系统之间的数据怎么迁移(老师写word我们边测接口边添加)详细介绍一下项目业务(从用户权限开始讲)过程中遇到过什么技术问题(英文+数字主键自增、规则库的不规则的树的遍历还有增删改查、方案查出来之后的去重【讲了下LinkedHashSet的去重】)有没有遇到jvm内存泄露的问题(无、那个时候还不知道啥叫OOM)。JVM内存泄露常用情景当团队队长和组长的经历、时间本科成绩(前50%,大佬笑了,前50%也太广了吧,然后说了下自己平时感觉不挂科就行了,写代码做项目比较多,没太关注过)其它项目(微信公众号,个人博客网站【运行在哪:个人服务器上边、为什么不用阿里云的学生机:我用的就是阿里云的学生机】)。了解阿里云上边主机的配置吗(轻量级服务器,1核2G,40G内存。5M带宽)有没有其他人来访问你的个人网站(有、但不多,大佬说项目里边可以补上,这个挺好)了不了解阿里云的云的体系,公有云、私有云(没有、、、、只是用过阿里云上边的服务器、域名、短信服务,看看阿里云app上边推送的技术文章)对未来的考虑接下来在技术这块有哪些需要补足的(现在项目并发量比较小,要加强一下并发编程,概念了解比较多,实操少)一块做修井项目的前端同学有特别好的吗有没有什么想问我的大佬跟我谈了点道理。要有改进的动力,多考虑系统的抗压能力。提高自己的架构设计(举了个栗子,如果石油系统的几十万人访问系统你这肯定扛不住。感觉大佬说的确实很有道理)。今年代码量产出多少(5w多【主要是修井2w8左右、博客4k多、公众号3k多(调用了github上边的sdk,代码量比较少比较方便)、平时小项目…】)。关不关注代码质量还有规范(idea上边的Java阿里巴巴代码规范,还有自己的项目下一届要继续维护,注释尽量清楚点,代码尽量精简点)
三面
三面是leader面,包括后边的面试基本都是凉在了leader面上边
自我介绍项目介绍学校里边学过那些科目数据库的三大范式以及应用(自己拿项目举例子)Spring bean的生命周期学习成绩Spring的bean工厂是什么nginx主要是干嘛的nginx代理了哪几层网络协议有没有挂过科
成都京东
一面
实习时间3个月是否能实现自我介绍redis平时的使用(消息队列如何实现的)spring boot启动的过程(run方法和bean的生命周期)spring加载静态方法和非静态方法的区别(不会。。。以为是代理那坨)sql优化sql优化的过程(顺便提了下存储引擎的区别)HashSet有用过吗(没用过,但用过LinkedHashSet做去重)多线程有用过吗(没咋用过,但是了解一些知识,以为面试老哥会深问,但并没有)谈一下并发跟并行的区别谈一下Java中的多态重写和重载的区别网络安全问题(主要是xss跟sql注入)项目里边的安全验证方式(token,说一下token的过程)反问阶段(对我的评价,怎么看招聘进度)
二面
没有自我介绍。全程14分钟,九点十分接的电话。不知道是不是面试官要下班的原因,面试时间很短,后来意识过来是来刷kpi的
项目都是你自己做的?说一下JVM的类加载为什么要用双亲委派MySQL的存储引擎Innodb的事务支持是怎么实现的平时设计数据库注意哪些问题?(说了下三大范式)平时在哪些网站学习有没有了解过新技术
过了三天二面面试官打电话过来,给我的评价是技术深度不够。后来我们另一个校区的校友(阿里新零售offer),跟我说给他的评价也是一样。有点佩服
阿里新零售
一面
自我介绍项目介绍项目业务详细介绍项目中的难点自己设计数据库的话会怎么设计比如疫情原因,一些油井无法开采,疫情过后又恢复生产,你要怎么设计数据库英文+数字的自增主键在分布式下如何解决(类似于MVCC机制,使用标识符和预知量判断)如果使用redis怎么解决自增主键在分布式下高并发的问题(在redis中建立一个键值对,不管插入何值都存到redis的value中。等到合适的时间再存入数据库,因为主键唯一所以不符合自增要求或者重复的会被直接pass掉)MySQL中的事务隔离级别自增主键进行写的时候会用什么事务隔离级别(读未提交)Linux常用命令awk命令的应用OOM情况如何排查
面完后阿里的师兄直接跟我说面试过了,然后因为我第一次的笔试成绩不行。需要补一次笔试,他给我发了一封邮件,里边五道题。一个ER图、四个编程(一道最长子串、三道深度遍历,只会做那个最长子串)
二面
这次二面也是leader面。算是在乌鸫那个大叔之后,被怼的最惨的一次,出乎意料的是,一个技术问题都没有。全程谈人生,谈完我给一面师兄发了微信问了下进度,师兄跟我说凉了!!!! 心态大崩
做个自我介绍你知道为什么要电话面试吗(评估应聘者的能力)你知道是评估应聘者能力,但你自我介绍说项目经验丰富,你应该自我介绍的时候就说你做过多少项目,突出一下你的特点重新自我介绍项目业务项目背景为什么要从一个单机版的项目转成一个线上项目你怎么加入你说的团队的学习成绩为什么在专业中等水平(平时注重技术这块)同学间有没有自己比较钦佩的人(专业第一和一个offer收割机)钦佩的理由职业规划反问环节
后边总结一下这次leader面失利的原因就是自己废话太多。
总结
春招失利的原因
自身原因:基础太差,以前只管做项目,没考虑过底层的东西。数据结构和算法差的不行。这些东西想突击太难
客观原因:油田项目开发周期太长,从去年七月份拖到今年三月交工。五月份因为项目保密的原因(代码不能放在GitHub上),三天内老师给我打了20个电话。
还有的话就是对自己期望太高,想一步登天进大厂。大厂的要求以我现在的水平是远远不够的。面试失利后(尤其是京东二面和新零售二面)调整不了心态。
建议
也不敢说是建议,毕竟现在也没有上岸。只是自己春招失利后的一些想法
基础的东西一定要打好(尤其是数据结构和算法)不太熟悉的东西尽量不要写在简历上一步一个脚印慢慢来,先定个小目标(挣他个一个亿哈哈哈)保持乐观的心态