- 我有这样一个使用场景,你要如何设计一个单例模式?
尽量问一些渐进式的问题,诱导面试者一步步思考,很多时候,面试官并不是要一个答案,而是想听听面试者思考的过程。
这里可以看看之前网上流传的一道很火的华为面试题:一头牛重800公斤一座桥承重700公斤问牛怎么过桥?
一看这个问题就很懵逼,什么玩意儿?
冷静的想一想,结果不重要,面试官想要的是你思考的过程,你会怎么回答?
-
首先,了解下牛过桥的需求具体是什么,过桥是要活牛还是死牛?是要吃牛肉,还是单纯没事闲着蛋疼?
-
如果可以是死牛或者是要吃牛肉,那就好办了,分解了运过去即可,或者说,能否在桥对面寻找替代牛?
-
如果是要活牛,那么现在的问题就是800kg和700kg的问题,要么压缩牛,要么加强桥。
-
所以针对这两个方面,我们可以考虑如何减轻牛的重量,比如来个热气球?让牛减个肥?发明量子传送通道?
-
而针对桥这个方面,我们可以考虑能否临时对桥进行加固,或者造个新桥?
-
剩下的内容无非是会议纪要,方案评审,立项,开发,上线,总结。
淦!这不就是我们平时和产品经理的对话?看来这个面试官平时被产品经理折腾的挺惨。
=====================================================================
面试官的问题,通常都是带有很强的目的性的,听懂问题的言外之意,精准的戳中要害,比长篇大论讲一堆不着边际的答案要好的多。
这一点其实很考验面试者的情商,要知道,很多言外之意,它之所以被称之为言外之意,那就是它真的不太能被人听明白,不识庐山真面目,只缘身在此山中,很多时候,面试官觉得他已经把这个问题的言外之意点的很明白了,但是面试者依然一脸茫然不知道是什么意思,这里面可能有面试官的问题,也可能有面试者的问题,总之,这是一个双向选择的过程。
例如下面这个问题——现在有一个功能模块,是之前的同事遗留的陈年老代码,现在有个新的需求要在这个基础上进行开发,讲讲你的开发思路。
这个问题看上去很懵逼,不知道要干啥,但仔细想想,我们能提取出几个关键词:
-
陈年老代码:不用问,这就是坑,危若累卵的坑。
-
新需求:可能明天就要上线,很急,在线等。
所以,面试官是不是想看看面试者,怎么处理这种场景的问题呢?
- 对于这种问题,我一般上来就重构,垃圾老代码,都是一坨屎,老夫写代码,就是一把梭,垃圾统统都要干掉。
面试官碰到这样的回答会怎么想呢?卧 槽,这是要P0事故的节奏啊,老代码虽然老,但是线上跑了N年没出锅啊,为了一个新的需求,直接全部重构,这风险,完全不可控,而且面试者解决问题的思路不清晰,没有轻重缓急,即使技术很牛逼,作为面试官,也要捏一把汗。
-
首先,我会先把这部分的代码逻辑理清楚。
-
然后看新需求是否能够在老代码的基础上完成。
-
如果能完成,那么优先完成需求,然后向团队提出建议,对这块代码进行适当的重构。
-
如果不能完成,那么需要跟团队Leader讲清楚原因,争取更多的资源来完成这个需求。
正合我意。
❝
面试者碰到没读懂的言外之意,也不要怪面试官,毕竟中文博大精深,面试官很可能是站在自己的立场上来看待问题,所以有些隐晦也是正常的,一个有经验的求职者,这个时候最好的办法就是提问,诱导面试官将问题具体化,让言外之意,不经意间浮出水面。
❞
越是高级别的面试,越是要深思熟虑后再回答,因为面试官越是高级,言外之意,可能也更加意味深长。
===================================================================
面试真的也是一个看运气的过程,碰到的面试官话不投机半句多,这是运气,职位空缺半年,急招,所以减低了一些要求,这也是运气,面试的内容正好做过、看过,这也是运气,有时候你面试不过,也许不是你自己的问题,很可能是运气的问题,还是那句话,双向选择。
====================================================================
面试者虽然经常被运气所玩弄,但这是不可避免的事情,我们能做的,就是当运气眷顾你时,完美的把握住这次运气。
打铁还需自身硬,当你足够强大时,全世界都会给你让路(让你去喝毒鸡汤)。
对程序员来说,实力的三大组成部分——经验、技巧和潜力。
我有十年的Android开发经验,真的吗?想到一个段子,一个刚毕业2年的程序员,简历上写我有4年开发经验,为啥?因为加班。
这4年,每天你都有提高吗?每天都了解了你不知道的知识点吗?如果不是,那么这加班,又有何用,只是为了生存而加班,经验?不存在的。
你不是有十年经验,而是把一年经验,用了十年而已。
经验并不等价于工作年限,它是你实力的一个投影,多思考,多总结,才能让经验增加,重复的体力劳动,增加的只是你的年限,而不是经验。
技巧来源于有效的经验,它是你经验的精华,一个面试者的技巧越丰富,越熟练,那么会反过来让他的经验变得更加丰富。
我认为技巧一般分为两个部分——内功和外功。
内功主要是对技巧深度的研究程度,表现在你对一个疑难问题的排查、一个复杂需求的实现,而外功,表现在你技巧的广度,对解决方案提出最优技术选型,架构的设计能力等方面。
所谓潜力不错,可能是对你能力不足的一个美化修辞,这个一定要注意区分。
真正的潜力,主要体现在5年以内的求职者,再之后的潜力,就转化为经验和技巧了,工作的前几年,经验有限,这时候一个人的学习能力和思维能力,就是他潜力的体现。公司实际上是非常愿意招有潜力的求职者的,一方面可以以很便宜的价格,招到不错的打工人,另一方面,团队可以小小的花力气将他的潜力激发出来,这样相当于获取了一个经验技巧不错的求职者。
那么如何让自己显得有潜力呢?
腹有诗书气自华,潜力主要来源于你的思考力和思维力,这些能力会潜移默化的让你变得有潜力,所以,平时多思考,多阅读,才能不断提高自己的潜力。
在面试过程中,潜力具体表现在下面几点:
-
学习能力:要体现出你的学习能力,这件事情虽然不会,但是可以快速学习,借助类似的知识,触类旁通,快速上手。
-
逻辑思维能力:做事情安排合理,分析问题有迹可循,解决问题能抓住重点。
=================================================================
前面说了,面试是一个双向选择的过程,除了面试者本身的这些硬条件外,还有些方面也是面试者需要注意的,这里简单的列举下。
-
尽可能选择现场面试、视频面试,避免电话面试,面对面的沟通往往是最高效的,不要因为沟通问题导致面试的失败。
-
注意细节,回答问题的时候,尽可能完善一些,比如边界条件,方案限制,树上的鸟有没有聋 子。
-
面试者是一个被观察者,你的一举一动,都可能给你带来正面或者负面的影响,所以,如果你很重视这次面试的话,尽量稳重一点。
等等,讲了这么多,回到最初的问题,我们为啥要面试?
废话,当然是为了跳槽,那么为啥要跳槽,干的好好的,为啥要跳呢?
跳槽,无非是两点:
-
钱不到位。
-
心不到位。
钱不到位很好理解,就像前面那个很有潜力的求职者,进公司培养一段时间后,潜力变成了经验和技巧,但是钱没跟上能力的涨幅,那么这个不到位就很好理解了,所以通过跳槽来寻求这种平衡,就自然而然了。
而心不到位,则是另一种情况,简单的说,就是在公司受委屈了,升职没通过,成果被人抢了,被背黑锅了,被同事、产品、测试、领导怼了…
说了这么多,在你鼓起勇气跟老板谈离职前,一定要先想清楚现在的状况,避免一时冲动,假戏真做了。
首先,要认清自己,认清环境。
在当前的社会中,特别是去年整个市场经济都不好,整体大环境处于比较差的局势,这时候冲动离职的结果,很可能就是长时间的空窗期,即使你特别特别想离职,人在屋檐下,有时候不得不低头,学一学司马懿的隐忍精神,都是成年人,当一当缩头乌龟又不会死(当然,这是针对老年人说的,年轻人就是要一把梭,那我也不反对)。
认清自己,是了解你目前的状态:
精神状态——是否能够适应加班,以及何种程度的加班
家庭状态——是否能够工作生活平衡,还是压根不需要平衡,以及通勤时间等等这些因素。
一个不加班月薪2w的工作,和一个加班疯狂月薪4w的工作,我相信每个人的选择都不一样,这就是工资工作比,把这些条件列出来,可以帮你更好的选择是跳槽,还是改变。
那么什么时候,可以说是必须跳槽的时候呢?
这个其实没有定论,我总结了一些方面,可能不全,也不一定对,博君一阅耳:
发展受限:特别是在公司职位不高的时候,这是你急速成长的时候,如果因为一些原因导致你在这家公司无法正常成长,那么这个时候,就要考虑跳槽去寻求成长了,不然仅凭一己之力,也是无法翻身了。
工资严重倒挂:工资倒挂其实很正常,因为通胀的原因,每年的新员工工资可能都比上次要高,如果你涨幅跟不上,就会出现倒挂,一旦这样恶性循环下去,钱和心,就都不到位了。
公司的发展受限:比如公司濒临破产,行业竞争力下降,导致业务下滑,这时候,如果你不是公司核心骨干,誓与公司共存亡,那么也可以跳了,毕竟不是核心的你,也无法左右公司的前景。
还有一种情况,比较特殊,那就是兴趣和激情。
如果你对每天的工作完全没有了任何激情,没有了任何兴趣,那也应该考虑是否要跳槽了,换个行业,或者是换个自己真的感兴趣的工作,是需要思考的问题,快乐学习、快乐工作,没有了波澜的生活,你和咸鱼有什么区别,一个理想的工作,就是每天做着自己真正喜欢的事,而且工资还不低。
❝
国企事业单位这种铁饭碗除外,毕竟还要向生活低头。
❞
================================================================
当你有了足够的能力,面试就自然不慌不乱了,这就跟考试一样,平时学的都掌握了,能力真实有效,上了考场也能游刃有余,特别是面试,比考试更简单,因为面试官也同样在被你面试,而且,面试官的压力也不一定比你小,面试的时候,他也会有很多担心:
-
这么久没招到人了,活都要没人干了。
-
是不是我的要求太高了?
-
这个人要是我过了,结果老板面了很不满意怎么办?
-
这人到底行不行,别来了让我背锅。
-
我的问题会不会被他鄙视啊,万一我记错了咋办。
-
这人太厉害了,万一来了把我挤下去怎么办。
你看,面试官的压力也不比你小多少。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
mg-4nt52BCG-1715872112240)]
[外链图片转存中…(img-waP5qbUT-1715872112241)]
[外链图片转存中…(img-HkSkpJXZ-1715872112242)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!