面试了15位来自985211高校的2024届研究生之后,思考良久,写下此文

后来,我把他送到公司门口,他已经走出去了,又转过身来和我握了一下手,他握的很用力,说:“谢谢!”

我在面试结果描述那一栏写的是:

  • 此人专业技能与工作年限不匹配。不建议进入下一轮面试。

面试结束之后,我把面试结果反馈给我的领导,领导看到我写的评语,意味深长的一笑,对我说:“和我预想的一样,年龄大,工作年限长,但是技术一般”。

之后,他用力握我手的场景有时候会不由自主的在我脑海里面浮现。

仿佛在鞭策我:前车之鉴,要警惕啊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

刚刚结束培训的培训生

对于培训生,不管你是因为热爱编程还是追求高薪而进入这个行业,我理解你们。面试时你也不需要特别的谦卑,技术面前人人平等。

有一部分培训生包装简历是为了过简历筛选关,因为有可能HR不懂技术,所以我非常理解,不包装简历,就没有面试机会,这样对于那些真正学到的知识的人就很不公平。

面试的时候我遇到他们,我都一视同仁,只要你学到了真本事,我聊了之后觉得还行,能达到我们的用人标准,都可以进入下一轮面试。

通过参加培训进入行业,我觉得没有问题。甚至你有真才实学,为了面试机会而包装简历,只要最后你坦诚相待,我也觉得没有问题。但是你包装了简历,自己又没有真材实料,态度还不端正,这就是有问题的了。当然属于培训中的一小波人,但是这一小波人的表现打上的标签,也会影响到另外的一下波人。

我身边就有几个通过培训进入行业的朋友,他们自己也非常刻苦努力,有热情,现在工作也还挺不错的。

但是我面试的时候遇到过一个培训生,说真的,就他包装的那个简历,很多技术没有实际操练过,真的经不住几个连环问的,几问之后,就原型毕露了。没有真才实学,期望工资还要的贼高。

你骗过了HR,你还要把技术面试官一起骗过去?都到技术面试了,一轮又一轮,你还能骗过去?

那你别干程序猿了,你去当演员吧。

所以,先把态度放端正了,我们再好好的聊技术吧。

你问我什么叫态度不端正?

你就参加了几个月的培训,找工作的时候听周围的人传说:"谁谁谁,今天拿了一个15k的offer。三个月前,刚来的时候连开发环境都是我帮他配置的呢!"然后你就感觉自己牛逼的不行了,甚至觉得15k是不是有点低了呀。

所以你面试的时候技术问题回答的一般般,没有什么亮点,但是一问期望工资,张口就是:“不低于18k吧!”。

这叫做态度不端正,而我还真的遇见过。

我当时告诉他:让唐僧成为唐僧的是那一坨经书吗?不是的,是取经的路啊。15K就相当于别人的经书,你别只盯着别人的经书看,你看看他在这一路上的八十一难。你经历了吗?

下面这图,当段子可以,别当真。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应届生

上周来面试全是2020年毕业的研究生。我面试的15个,大多数都十分优秀。

但是我想聊的是那些表现一般的人。

由于他们都来自名校,所以我怕问的一些问题没有cue到他们的点,不合他们的胃口(社招面试的时候我才不会这么想),在进行了几个常规基础面试题预热后,我每一个面试者都问:“请问你觉得你对Java哪一块比较熟悉?基础、框架、中间件的都行,我们可以聊聊。”

很奇怪,大部分都说自己对Java集合这块比较熟悉。可能是集合这块的面试题很多,大家都看过相关的视频或者文章。

基础不牢,地动山摇 — 集合

有一个面试者也说他熟悉集合,我问他:

  • 为什么我们建议在定义HashMap的时候,就指定它的初始化大小呢?
  • 正确的回答是: 在当我们对HashMap初始化时没有设置初始化容量,系统会默认创建一个容量为16的大小的集合。当HashMap的容量值超过了临界值(默认16*0.75=12)时,HashMap将会重新扩容到下一个2的指数幂(16->32)。HashMap扩容将要进行resize的操作,频繁resize,会导致降低性能。
  • 你要是能补充一句: HashMap是线程不安全的,它的不安全就体现在resize的时候,多线程的情况下,可能会形成环形链表,导致下一次读取的时候可能会出现死循环。
  • 要能再说说画画,具体是怎么死循环的,那就很不不错了。

然而他说:“这个我不太清楚,我用的时候没有指定过大小,但是我知道默认大小是16。”

当他这样回答的时候,我大概就判断他可能只是看过几个集合相关的面试题,并没有进行过深入的研究,远达不到熟悉的标准。

  • 我说的熟悉是禁得住比较深入的探讨。
  • 可能他理解的熟悉是熟悉的使用吧。

我准备引导他,看看他自己通过几个题,能不能联系起来,然后回答这个问题,所以我接着问:

  • 1.那HashMap什么时候扩容呢?
  • 2.扩容到多少?
  • 3.怎么扩容呢?
  • 参考答案: 1.添加元素的时候会检查容器当前元素个数。当HashMap的容量值超过了临界值(默认16*0.75=12)时扩容。 2.HashMap将会重新扩容到下一个2的指数幂(16->32)。 3.调用resize方法,定义长度为新长度(32)的数组,然后对原数组数据进行再Hash。这个过程是一个性能损耗点。
  • 我是想先问扩容,再问扩容带来的问题。 因为会带来问题,所以我们就尽量减少扩容。 为了减少扩容,在我们已经知道集合具体多大,或者有个预估值的情况下 就设置一个初始化大小就好了。
  • 我想这样引导他,但是他…

结果他说:“当集合大小大于默认大小16的时候,会扩容,扩容的大小是原来的1.5倍。具体这么扩容的我不太清楚,我记得好像是会新建一个集合,把原集合拷贝过去”。(注意这是个错误回答!!!)

当他说完之后,气氛突然尴尬了起来。很明显,他把ArrayList和HashMap的扩容记错了,基础不牢的表现。

当时我内心就有一个大大的问号:你不是说你熟悉集合吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基础不牢,地动山摇 — 线程 多线程编程,这是基础且关键的技术吧?

因为是应届生,在学校里面学了各种各样的语言。所以面试的时候我会问面试者:你的主要开发语言是什么?

只要面试者说,他的主要开发语言是java。那我就会问线程池:

  • 了解JDK Executors线程池吗?
  • 知道JDK提供了哪些默认的实现吗?
  • 看过阿里巴巴java开发手册吗?知道为啥不允许使用默认的实现吗?
  • 你们没有用默认的吧?那来介绍一下你们自定义线程池的几个常用参数呗?
  • 你这个几个参数的值是怎么得来的呀?算出来的?怎么算出来的?
  • 好,现在我们有一个自定义线程池了,来说一下你这个线程池的工作流程呗?
  • 那你这个线程池满了怎么办呀?拒绝?咋拒绝?有哪些拒绝策略呢?
  • 别紧张,随便说两个就行。
  • (这里不作回答,如果你不太清楚的话。建议去了解一下。)

有的朋友可能会说,应届生问什么线程池呀,大多数都没有真正的用过吧?

是的,我当然知道应届生可能大多数都没有用过线程池。但是我们的招聘里面写了:基础扎实、熟悉多线程编程。

考题范围都告诉你了,你不去准备一下?

再退一步说,大多数面试者,在我问到有哪些默认实现的时候,他们就能自动的把下面的问题都回答的差不多。

但是有几个面试者,他们的回答是:仅仅是用过默认实现,具体内部细节没有了解。

那我就会觉得,额,怎么说呢,可能会多想一下,当然也肯定不会因为这个问题刷掉面试者,但是这感觉不好说,你自己的体会吧。

然后,关于线程这块,我还会问一个题,这题是我们的宣讲会的初选题,他们都做过:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大多数面试者,看了十几秒就说选C,并且告诉我理由。

有个面试者他看了一分钟,思考的很认真的样子,然后说他选择D选项,因为选项内容说反了。

我说,你确定吗? 他说:我很确定。 我说:下去之后再了解一下吧。

有的面试者看了一分多钟后,没给出答案,由于面试时间宝贵,我就说:这样吧,这题选C。你告诉我C为什么错了呢?

这个时候,大多数面试者都会给出一个正确的答案:

  • wait()方法会导致线程放弃对象锁,进入等待此对象的等待锁定池, 只有针对此对象调用notify()方法或者notifyAll()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

注意是准备获取对象锁进入运行状态,而不是立即获得。 再看一下《Java并发编程的艺术》里面是怎么说的,有这样一段话:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是有的面试者,对于C为什么错了,还是给不出详细分析。

这里反映出了两个问题:

  • 第一个问题是:基础不牢,地动山摇。
  • 第二个问题是:这题他们都做过,但是做完了就做完了,甚至不知道自己哪些题对,哪些题错。没有加以总结。这是不好的表现。

概念模糊,似是而非

另外一个面试者回答说他对Redis了解的比较多一点,项目里面用过。

我问了他:“Redis你是拿来做缓存吗?有没有考虑过缓存击穿、缓存穿透、缓存雪崩的情况呢?”。

这里我就不作答了,我之前写过一篇文章《当周杰伦把QQ音乐干翻的时候,作为程序猿我看到了什么?》介绍过,不了解的朋友可以去看看。

他说:“Redis在我的这个项目里面,就是拿来做缓存的。你刚刚说的那几个概念,我有听说过。但是我们的项目还没遇到这样的问题。”。

我说:“明白,没有关系,你给我介绍一下相关概念和对应的解决方案吧”。

他说:“这个不太清楚。”

好的,我想可能是关于Redis的理论知识比较强吧。我接着问:“那你给我介绍一下Redis的两种持久化策略呗?”

他倒是说了一些上来,但是整个回答听起来,概念模糊,似是而非。需要我主动去找他回答里面过滤掉一些口水话,提取到几个关键词:AOF,RDB,异步刷盘,可配置,命令追加…

而且说着说着卡壳了,有一种背课文的感觉。

我理解,这个程度,不能叫做熟悉。

送分失败,大失所望

面试的最后几分钟,我都会问一个问题:最近在看什么技术相关的书籍或者文章吗?

典型的送分题呀。这题很难回答吗?你甚至可以说,学业繁忙,主要看的还是课堂上的东西。 这题你不回答,不减分。回答的好可以加分,回答的不好会减分。

有一个哥们回答说:我最近在看《深入理解Java虚拟机》。

我一听,有点意思,可以探讨一下了。这书我前后加起来看了五次,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我问他:“你看了这本书后印象最深的点有哪些呢?”

他说:“我印象最深的是垃圾回收会导致用户线程停止。因为我之前遇见过这样的问题,我的程序经常跑着跑着就停了,我当时不知道为什么。后来了解到,是垃圾回收的时候导致的用户线程暂停。”

我听到他这个描述我想的是:那这个程序有问题呀,为什么会这么频繁且长时间的进行FullGC呢。

于是,我问他:“你是怎么排查这个问题的呢?”

他说:“不是我解决的,是实验室其他的同学解决的,同学给我说是垃圾回收的时候导致的问题。我最近看《深入理解Java虚拟机》的时候也联想到了这个问题。”

听到这里我已经有点失望了,他遇到了问题没有主动去解决问题。同学告诉他原因了,他也没有继续深究下去。

算了,还是回到书上去吧。我问:jvm在回收哪块区域或者进行什么操作的时候会出现你刚刚说的暂停(Stop The World --> STW)用户线程的情况呢?(根节点枚举、单线程收集器不考虑。)

其实书上写的很明确了。老年代进行Full GC的时候会STW,而老年代常用的垃圾收集器是CMS:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更深一层次的原因书上也写了:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

而他的回答是:不太清楚。

失望。

你要说你没看过回答不上来,我还可以理解。但是你说你最近在看,却没有回答上来。那我可以理解为:你仅仅是看了,却没有留下任何的东西吗?

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿

录播视频图.png

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿**

[外链图片转存中…(img-aidHXrYU-1712775724201)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-dlhD1T9Q-1712775724202)]

  • 30
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值