查看原文
其他

招聘信息上是8-13KJava研发岗,面试通过后 HR:7K能接受的话可以来这里锻炼一下

我是程序汪 我是程序汪 2021-09-08

感谢粉丝主动分享自己的面试经历,也欢迎其他粉丝分享自己的经验,程序汪最近在老家深山老林里休假,前段时间6.18加班比较多,于是就调休里

一本粉丝

程序汪你好,我很想跟你分享一段我最近的面试经历和我自己的感受。希望你能耐心的读完我的面试过程,谢谢!


先说一下我的个人情况:2019年毕业生,普通一本院校,昆明理工大学(非985/211),自认为不是我们学校毕业生里面Java方向最厉害的一个,但敢说自己是同学中对Java最努力的一个。

工作地点是云南昆明,也一心想往互联网方向去走,各种原因,现在在一家偏向于传统行业的公司做Java开发,公司用到的技术栈,整体技术高不成低不就,会很前沿技术的大佬基本找不到。微服务,redis这些还是用到的,但是像多线程,MQ,Docker,K8s这些根本接触不到,自己危机感很强烈,所以平时完全靠自觉去学习,对了,我今年22。这是我的基本情况。


具体面试


这次面的是一个做中国移动业务的互联网公司(南京的一家公司在昆明的分公司),招聘信息上是8-13K的Java研发岗。我投递时候填的期望薪资是10K,一面二面HR面全部通过之后我能接受的最低是9K。整体的面经我整理了一下,说实话我感觉问的还是有点多,有些也记不起来了。

1) 自我介绍。

我回答的中规中矩,自报家门,项目经历,自己的求职意愿和擅长的技术栈。(我点了java基础,redis,微服务,多线程和jvm)

2) 提问我Spring的IOC和AOP?

因为自己刚看过源码,我从出发点为应用程序提供一个基础的可运行的环境为目标,然后在refresh方法里面刷新bean工厂,解析bean标签,注册beanDefinationMap,创建单例对象,依赖注入和三级缓存解决循环依赖的步骤大概说了一下。整个过程我也故意停顿,在观察面试官的反应,有回应的地方我就说的细一点,没有回应我就简单说一下。我说完IOC他就没有对AOP进行提问。我觉得开场这里我表现的还不错。

2) 提问我数据库优化

也是比较巧,这个问题我跟小伙伴讨论过。

我的回答是:

一、优先保障可用,我考虑主从。

二、将大表水平或者垂直拆分(垂直拆分用主键取模,为什么不用其他的办法),拆分之后怎么做查询。

三、我才说索引,创建索引需要注意什么,使用索引需要注意什么。


2) 提问我Hibernate和MyBatis的区别

这一个其实比较常规的问题,对比优缺点,我把我能想到的都说了一下,对这两个框架我都不是很了解,底层源码也还没有看过。

2) 接着提问写SQL的时候要注意什么

我把有用到索引的情况和没有用索引的情况都说了一下。

2) 提问我微服务的一些知识

这里聊的时间比较长,服务注册和发现,负载均衡,熔断限流降级这里聊的多一点点。

之后说了一个分布式事务,我只记得二阶段提交,TCC补偿和进最大努力通知这三种办法,因为我对MQ不是很了解,我在聊尽最大努力通知的时候故意答的比较少,然后我说我做业务系统一般用阿里的seata比较合适,然后把Nacos,Sentinel这几个阿里最新的微服务组件点了一下。不过面试官反馈不是很多,所以我就觉得好像他们的项目没有用这些,反而问了我一个服务监控的组件,我一猜就知道好像它要问了链路追踪+Zipkin那一套,我就随便聊了一下。

2) 提问我在生产上有没有遇到内存泄露的情况。

提问我JVM的理论我还是有信心的,但是实际的jvm内存溢出排查我是没有多少经验的,业务系统做多了就这样。可惜这里它就只随便点了一下JVM里面的几小个问题,问的不是很深。但是我也回答出来了。

2) 一些比较常规的问题

这次面试比较尴尬,面试官没有打印我的简历,快要结束的时候他才说,然后我马上从包里拿出来给他。

对着简历上面又补充了一些,Redis的RDB,AOF啊这些也问了。然后问了问Linux的常规命令,有没有用过,有没有在上面装过上面东西之类的。

最后问我最近在学什么?我说在学一下多线程和K8s,我说想往云计算靠一靠,因为做Java危机感比较强,可能以后几年k8s会成为一些企业的新选择吧。

之后他的话让我很费解,他说别人都已经做好云计算了,我们直接买就好了,为什么企业还要用K8s自己搭建呢,并且容器稳定性和并发上也不是很可靠呀。

一面到这里就结束了,整个提问-回答的时间大概是一个小时左右。其实有些问题我没有答好,有些自己也确实不知道。但是还是收到了二面的通知。


二面:

因为提前知道是分公司的领导面,刚开始我以为不是技术面,可能就是简单的谈薪之类的。

1、Spring

同样的一开始问Spring(生命周期,作用域,ioc容器是什么),问到循环依赖的时候,我就知道了这次面试的是个技术牛人。试探了我之后,就大概知道我是什么水平,所以之后问的问题就是那种精简回答的形式,问的都很细,不会有你说一说微服务这种很宽泛的问题,都是很直接的问到一些细节上。我能记起来的还有:

2、reids : 缓存击穿、布隆过滤器、主从哨兵、集群之间是怎么共享数据的、Redis实现分布式锁 (都答上来了,Redis应用我还是觉得有点信心的,底层的一些数据结构我就不太清楚了,这次面试对Redis也没问的很深)

3、多线程:悲观锁、乐观锁、可重入锁、获得线程的方式、线程池7参数,这些我觉得我还是答上来了。线程本地变量(我没答上来),还有一个伪共享问题,我想了几秒钟才想起来好像是cpu缓存带来的问题,但是我只说我看道格李在juc源码包里面是把数据用空变量补满这个cpu缓存行来解决的,别的就真不知道了(之后我去百度,我居然蒙对了一半)。面试官说这个问题确实有点难,之后多线程这里就过了。我比较奇怪,居然没问volatile和synchronized

4、集合框架:HashMap肯定是必问,不把put、扩容、循环链表这些说清楚都不罢休的那种。HashTable,ArrayList,LinkedList这些都问了(我感觉答的还可以)

5、数据库:直接提问1千万条数据的表,怎么去优化。我回答的是先取模分库分表,再考虑索引。又接着问索引B+树这些比较常规。

6、网络:session,cookie,token这些,四次挥手 (比较模糊,答的不是很好,尤其是四次挥手,我当时突然记不起来了那两个变量叫啥了)

还有一些是我不知道的,问到的时候我坦白没有看过源码或者没用过:

memacahce、还有MyBatis源码里面的东西


公司答复

最后给我的答复是:7K能接受的话可以来这里锻炼一下

其实我是不能接受的,感觉自己的努力没有得到肯定,也是郁闷了好几天。最后他们总部的HR电话跟我谈:不是不肯定我的能力,而是在昆明这个地方,毕业一年确实很难突破这个价位,要考虑平衡性,同等水平的在他们公司也是这个价位。反正各种说了很多。(我现在所在的公司就已经是7K了,所以不想做一些没有意义的操作,HR她本人也问过我,也是知道的)

其实说了这么多,我觉得有句话是很有道理的:我理解你,但是我不会支持你。


我觉得互联网是一个相对其他行业比较公平的行业,只要你努力,就有很多可以选择的机会,不管在传统行业还是梦寐以求的大厂,只要想提升自己,方式方法很多的,整个网上的资源很多,各路大神创造下的神话也很多。我会郁闷一段时间,为什么因为自己的经验低就要被压价,年龄在这个时候反而成为了劣势,为什么活干的没有我利索的人拿的要比我多。郁闷归郁闷,我只能接着去努力,在下一次有选择机会的时候,不让最终的结果辜负了自己这么多个晚上的伏案苦修。


我觉得可以借你这个平台,用我这次经历去给跟我有类似情况的同学鼓鼓劲。敏感信息在写的时候我都帮你屏蔽啦

最后

感谢粉丝的真实面试分享,也欢迎其他粉丝向程序汪分享你的经验


最后感谢粉丝的关注,下面用7本书和一个小硬盘的抽奖,仅限我是程序汪公众号粉丝参加有效,抽奖截止时间20200710

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存