自我介绍:四川某双非一本院校计算机类学生。从18年4月进入学校一个本科实验室(下称团队)开始学习Java,同年11月份开始接手一些团队自用的项目(团队成员管理系统)。后边担任团队队长,接手很多外包项目,但能写在简历上的不多,只有一个油田的项目、自己搭建的个人博客还有一个微信公众号。19年代码产出5w+(春招面试的时候也没有啥亮点)
今年4月开始准备走春招找暑期实习。现在想想自己心是真的大,4月13号boss直聘上边收到一个阿里师兄的内推邀请立马就投了,那时候还没准备任何东西(HashMap底层都没看过的程度),到21号收到人生第一次面试(阿里乌鸫),下边跟大家分享一下我的春招面经
1 阿里乌鸫
-
一面
-
自我介绍+项目(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代理了哪几层网络协议
-
有没有挂过科
2 成都京东
-
一面
-
实习时间3个月是否能实现
-
自我介绍
-
redis平时的使用(消息队列如何实现的)
-
spring boot启动的过程(run方法和bean的生命周期)
-
spring加载静态方法和非静态方法的区别(不会。。。以为是代理那坨)
-
sql优化
-
sql优化的过程(顺便提了下存储引擎的区别)
-
HashSet有用过吗(没用过,但用过LinkedHashSet做去重)
-
多线程有用过吗(没咋用过,但是了解一些知识,以为面试老哥会深问,但并没有)
-
谈一下并发跟并行的区别
-
谈一下Java中的多态
-
重写和重载的区别
-
网络安全问题(主要是xss跟sql注入)
-
项目里边的安全验证方式(token,说一下token的过程)
-
反问阶段(对我的评价,怎么看招聘进度)
-
二面
没有自我介绍。全程14分钟,九点十分接的电话。不知道是不是面试官要下班的原因,面试时间很短,后来意识过来是来刷kpi的
-
项目都是你自己做的?
-
说一下JVM的类加载
-
为什么要用双亲委派
-
MySQL的存储引擎
-
Innodb的事务支持是怎么实现的
-
平时设计数据库注意哪些问题?(说了下三大范式)
-
平时在哪些网站学习
-
有没有了解过新技术
过了三天二面面试官打电话过来,给我的评价是技术深度不够。后来我们另一个校区的校友(阿里新零售offer),跟我说给他的评价也是一样。有点佩服
3 阿里新零售
一面
-
自我介绍
-
项目介绍
-
项目业务详细介绍
-
项目中的难点
-
自己设计数据库的话会怎么设计
-
比如疫情原因,一些油井无法开采,疫情过后又恢复生产,你要怎么设计数据库
-
英文+数字的自增主键在分布式下如何解决(类似于MVCC机制,使用标识符和预知量判断)
-
如果使用redis怎么解决自增主键在分布式下高并发的问题(在redis中建立一个键值对,不管插入何值都存到redis的value中。等到合适的时间再存入数据库,因为主键唯一所以不符合自增要求或者重复的会被直接pass掉)
-
MySQL中的事务隔离级别
-
自增主键进行写的时候会用什么事务隔离级别(读未提交)
-
Linux常用命令
-
awk命令的应用
-
OOM情况如何排查
面完后阿里的师兄直接跟我说面试过了,然后因为我第一次的笔试成绩不行。需要补一次笔试,他给我发了一封邮件,里边五道题。一个ER图、四个编程(一道最长子串、三道深度遍历,只会做那个最长子串)
二面
这次二面也是leader面。算是在乌鸫那个大叔之后,被怼的最惨的一次,出乎意料的是,一个技术问题都没有。全程谈人生,谈完我给一面师兄发了微信问了下进度,师兄跟我说凉了!!!!心态大崩
-
做个自我介绍
-
你知道为什么要电话面试吗(评估应聘者的能力)
-
你知道是评估应聘者能力,但你自我介绍说项目经验丰富,你应该自我介绍的时候就说你做过多少项目,突出一下你的特点
-
重新自我介绍
-
项目业务
-
项目背景
-
为什么要从一个单机版的项目转成一个线上项目
-
你怎么加入你说的团队的
-
学习成绩
-
为什么在专业中等水平(平时注重技术这块)
-
同学间有没有自己比较钦佩的人(专业第一和一个offer收割机)
-
钦佩的理由
-
职业规划
-
反问环节
后边总结一下这次leader面失利的原因就是自己废话太多。
4 总结
自身原因:基础太差,以前只管做项目,没考虑过底层的东西。数据结构和算法差的不行。这些东西想突击太难
客观原因:油田项目开发周期太长,从去年七月份拖到今年三月交工。五月份因为项目保密的原因(代码不能放在GitHub上),三天内老师给我打了20个电话。
还有的话就是对自己期望太高,想一步登天进大厂。大厂的要求以我现在的水平是远远不够的。面试失利后(尤其是京东二面和新零售二面)调整不了心态。
建议
也不敢说是建议,毕竟现在也没有正式上岸。只是自己春招失利后的一些想法
-
基础的东西一定要打好(尤其是数据结构和算法)
-
不太熟悉的东西尽量不要写在简历上
-
一步一个脚印慢慢来,先定个小目标(挣他个一个亿哈哈哈)
-
保持乐观的心态
有道无术,术可成;有术无道,止于术