双非本科的大厂暑假实习之旅
自我介绍:四川某双非一本院校计算机类学生。从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个电话。还有的话就是对自己期望太高,想一步登天进大厂。大厂的要求以我现在的水平是远远不够的。面试失利后(尤其是京东二面和新零售二面)调整不了心态。建议也不敢说是建议,毕竟现在也没有正式上岸。只是自己春招失利后的一些想法- 基础的东西一定要打好(尤其是数据结构和算法)
- 不太熟悉的东西尽量不要写在简历上
- 一步一个脚印慢慢来,先定个小目标(挣他个一个亿哈哈哈)
- 保持乐观的心态
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论