文章目录

    • 写在前面
    • 直接重返战场!
    • 这次,我们不开车。教你怎样一步步捉住面试官的心~
      • 1. 二面的进程是什么样的?
      • 2.怎样挑选/找到项目?
      • 3. 项目中或许触及的根底常识都背熟了吗?
      • 4. 哪些场景是我能够Hold住的?
      • 5.Hold不住怎样和面试官刚?
    • 写在最终

写在前面

自从上篇 成功入职字节跳动的小姐姐告知你,Android面试吃透这一篇就没有拿不到的offer! 火了之后(脸红!谢谢我们喜欢~)许多小伙伴都留言或单独私信我,让我出一个面试中项目怎样说的阅历共享。

好,这就组织上了!

其实,我在预备项目面之前,也在各处搜刮项目面试通用阅历。终究遗憾发现大多都是空话。底子无法将详细项目代入,看完之后也不知道自己该做什么。

本文彻底推翻普遍大而空的面试方法论,本着”不说废话,直接上干货”的准则,以详细项目为,给我们提供一个从预备到面试整个进程的指路灯

在整篇文章开端前,我们需求清晰一件事:面试官经过项目面想要了解什么?

你或许会答复我:当然是牛逼哄哄的技能和少说也得三四五个项目的雄厚阅历吧?
错!
首要,你要知道,你参与的是校招。你技能再刚,阅历再多。最多也仅仅做了一个千级万级dau的项目和2~3年左右的阅历。技能和阅历并不是企业挑选校招生的中心规范。

他们看中的是:处理问题的思维方法,简言之,便是你在项目开发进程中处理各种问题的能力。
所以,与其花时刻去积累项目或用各种方法让你项目显得很厉害。不如捉住一到两个项目,深入了解,考虑怎样经过项目向面试官展示自己。

项目经验不会说?字节跳动小姐姐手把手教你

那么,一次成功的项目面应该是什么样的?

我以为,一次成功的项目面更像是一场博弈。针对项目所露出的问题不断评论。唇枪舌战,谁与争锋。往往结局便是双方探索出一个达成一致的计划,能够对原项目产生质的提升与打破。
你或许惊了,这哪是面试?这更像是一次技能交流。没错!这便是一次技能切磋,头脑风暴,思维火花的基情碰撞
看到这儿,你是否有许多问号:这简直推翻了我的三观!你这么搞,真的能成吗?
懒得废话,一恩姐姐马上带你时光络绎,

直接重返战场!

现在是北京时刻11月4日下午14点,阳光明媚,万里无云。长途视频中面试小哥哥的笑脸无比慈祥。

小哥哥:我看你简历中写着你曾经做过车辆监控办理体系,能和我简略介绍一下吗?
我:好的。我在读研期间担任车辆实时监控体系的开发。本项目是……选用了ReactNative结构进行开发。我的首要作业包含以下几个部分:分别是……

小哥哥:能详细说一下ReactNative结构是怎样与原生进行交互的吗?
我:ReactNative与原生是经过webView进行交互的,经过postMessage将数据传送给原生巴拉巴拉……(答复完问题,马上画风一转)这样完成能够完成功用,但有一定坏处,比方……。因而我对这一坏处做了进一步的优化,即……。

小哥哥:在项目中你还遇到了哪些问题吗,是怎样处理的?
我:有的,由于我的项目是车辆实时监控体系。重难点便是实时性和地图两方面。这儿实时性是经过websocket长衔接完成的,我在做项目中遇到过2个难点,分别是……,我的处理方法包含:……;关于地图也有需求留意的当地,比方会形成电量和网络许多耗费,因而在开发进程中做了功用上进一步优化

小哥哥:能跟我说说你都做了哪些功用上的优化吗?
我:首要包含2个方面,分别是网络优化和电量优化,网络优化包含监听流量……,电量优化我则从以下三个方面做的,即数据传输进程对数据的压缩,资源的及时开释……

小哥哥:关于你刚刚说的websocket,我想多问一句,你是什么时分会中止长衔接呢?
我:(糟糕,这题没预备!)我现在的做法是只有翻开地图页面才敞开长衔接,由于避免在不需求的场景传送无用的数据导致资源耗费。不过这样做仍存在一些问题,由于……。
小哥哥:不过,我以为长衔接能够一向存在,由于在不传输数据时长衔接耗费根本不存在,却是重复开关长衔接会形成不必要的耗费。而且监控类项目或许会触及大局报警,就算没有翻开地图也需求取得长衔接推送过来的消息。一同我提个主张,能够经过心跳检测进行监听,在心跳包没传送时加上重试能够对不稳定的长衔接有一定改进。
我:嗯好,的确对长衔接十分有优点。但仍有缺点,我这儿也想到一个新的计划……

整场面试我们评论了足足两个多小时,从项目本身到新技能的前瞻,最终因时刻超量不得不完毕。现在想想仍然觉得惊险刺激,意犹未尽,大脑跟着火了相同熊熊燃烧……只想仰天长啸一声:爽!

痛心疾首的是,小哥哥的微信没要到啊!

项目经验不会说?字节跳动小姐姐手把手教你

说了这么多,我们现在应该对一场成功的项目面心里多少有点数了吧?假如你也想和小哥哥来一次基(?)情四射的技能交流,那么请你持续看下去!

这次,我们不开车。教你怎样一步步捉住面试官的心~

1. 二面的进程是什么样的?

首要,先得理解。二面/项目面的整个流程及应对的思路。

项目经验不会说?字节跳动小姐姐手把手教你

这儿针对项目面的四个重要节点提供了首要思路。下面会胪陈这四个节点,我们需求将自己的项目代入这四个问题,问问自己是否能经过检测。

2.怎样挑选/找到项目?

(1)怎样找到/选出适宜的项目?
每个人的项目阅历起点不同,有人两袖清风,想着法子无中生有;也有人左拥右抱,却也无从下手。

我以为,寻找/挑选项目需求遵从以下两个准则:

  • 必须包含一到两个 可扩展性 常识点
  • 最优点理了清晰的 需求

首要,什么是可扩展性常识点?是指一个常识点,作为一个根结点,它的延伸分支能够深入到很远。举个栗子。ListView,来我们跟我一同背,用于显示列表,需求一个adapter来对数组进行包装,经过RecycleBin进行缓存。……这就没了?不能够!请跟我持续:ListView怎样对convertView复用?ListView中图片过多引起OOM怎样处理?上下左右滑动抵触怎样做?ListView中能够包含许多图片,布局复杂导致卡顿怎样办?ListView怎样完成下拉改写上拉加载?用RecylerView代替ListView处理了什么问题?……

项目经验不会说?字节跳动小姐姐手把手教你

我想你大概理解什么叫可扩展性了。为什么需求这个东西?由于他能够 控场
由于这些延伸分支便是你的套路呀!提早预备好一两条分支上的根底常识、重难点、优化点,并在描绘项目时做一些诱导,就能够十分心计地让面试官依照你早已精心预备的套路问问题~

你看,我并没有说出你们想要的答案:首选很难很剽悍的项目。由于再难再复杂的项目面试官都见过,你的难关于他们而言仅仅大巫见小巫,并不足以吸引他们。

当然,假如你满意自信,以为能把抓住两大根本准则的一同急进发挥,把一个前无古人后无来者的项目说的精彩绝伦。那你是大佬,小女子瑟瑟发抖,甘拜下风。

项目经验不会说?字节跳动小姐姐手把手教你

关于没有项目的同学,能够在黑马、腾讯课程上跟着做一个简略的项目。在预备进程中需求融入自己的考虑,化为己用。

可扩展常识点关于项目的顽强青铜和荣耀黄金都适用,千万不要停留在项目外表,请去挖,把他的祖坟十八代挖个透彻!下面以一个实例来阐明怎样延伸:
有一个小伙伴私聊我,说自己项目平铺直叙,不知怎样去画常识树,扩展分支。我去看了一下他的简历,发现他有介绍自己使用了ViewPager。就帮他进行了一次剖析

项目经验不会说?字节跳动小姐姐手把手教你

(2)怎样简略介绍项目?

不多说,拿干货。直接上模版。

  1. 介绍一下项目和你的首要作业。
  2. 首要作业是怎样完成的:
    (1)用了什么结构,怎样使用
    (2)描绘一下中心代码

这往往是项目面的第一问,留意,不要废话,言简意赅,为面试官跳入套路做好前戏
一恩事例

我在读研期间担任车辆监控体系的开发。本项目是对危险品车辆进行全国范围内的监控与办理,首要功用包含对危险品车辆进行实时定位、轨道回放、违章查询和报警等功用。选用React-Native结构进行开发。我的首要作业包含以下几个部分:
第一是:地图的集成和封装。
由于RN的地图插件功用有限无法满意项目的需求,因而计划使用原生的地图SDK进行功用的完成,但考虑到需求一同完成android和ios两套事务逻辑的完成,浪费开发成本。终究考虑选用H5封装地图完成事务逻辑的完成。封装功用支撑地图显示、车辆实时定位、轨道回放等功用,得到了项目组的肯定并沿用至今。
第二是:人脸收集与注册识别。 经过Android和IOS端进行原生开发,经过原生代码完成人脸收集与注册识别,并反馈给RN端完成数据的重用。

3. 项目中或许触及的根底常识都背熟了吗?

看到这儿我信任你现已选好了自己的真命项目。现在到了激动人心的环节,我们来扒他/她老底!

项目经验不会说?字节跳动小姐姐手把手教你

关于一个项目他的常识体系是十分巨大的,你所担任的那部分作业所牵扯到的常识点便是面试官发问的当地。因而需求总结与细化常识体系。(也便是上一步中可扩展性常识点的延伸分支进行细化~)

我以为这儿需求做的作业包含但不限于:

  • 常识点根底常识
    (请看上一篇博文:成功入职字节跳动的小姐姐告知你,Android面试吃透这一篇就没有拿不到的offer!)
  • 常识点与项目怎样交融?
  • 中心代码怎样完成?

至于详细作业怎样去做我们能够参考我这篇博文:下文链接有爆照福利!为了让你们点进去我都爆照了!
一恩的面试项目介绍(求你们了,一定定定要看!思路都在里面了!)

项目经验不会说?字节跳动小姐姐手把手教你

项目经验不会说?字节跳动小姐姐手把手教你

当然,我又双叒叕打印出来了,每天背一背,生活养乐多~

我以为我们也需求和我相同,用同样的方法对自己的项目进行总结,包含需求规划、技能点、项目完成。

4. 哪些场景是我能够Hold住的?

我信任,经过这样一番介绍。面试官现已对你的项目有了根本了解并且对你的作业内容深信不疑了。
(copy项目的,请收起你们凶恶的笑脸!)

现在他们要正式开端向你发起攻击,这怎样能忍?先下手为强!不要让敌人有待机而动!

不过我们先缓一步,回想一下,面试官想要了解什么?对处理问题的思维。好,现在我们一同控场!
(1)直接提出问题
针对你的作业内容/代码提出不足之处,直接跟面试官露出。关于不足之处,我们能够从以下几个方面来考虑:

  • 代码高雅性:怎样对代码进行重构?
  • 杰出的规划思维:怎样运用规划形式?
  • 功用优化:内存、电量、布局等等优化
  • 技能缺点:技能计划、选型的不合理性、缝隙等
  • 产品思维:人人都是产品经理,从需求下手,提出更好的规划思维

(2)处理问题与提出TODO
处理的问题应详细问题详细剖析,上面提到的5个角度都是十分重要的。尤其是功用方面,功用优化认识是高级工程师的根本素质。关于问题假如现已有处理计划则应详细说自己怎样处理,假如没有处理能够告知面试官自己的现在的思路,与后续TODO。

一恩事例

我的项目是车辆实时监控体系。重难点便是实时性和地图两方面。
【技能缺点】这儿实时性是经过websocket完成的,我在做项目中遇到过2个难点,分别是当传输的数据量过大会形成网络的担负,这儿我选用数据分帧的方法分片传输数据;第二个问题是长衔接的不稳定性,或许会随时断链,假如不得当处理睬形成资源不必要的浪费,更有甚者会导致溃散,这儿我选用了心跳检测的方法监听长衔接,假如没收到心跳包则在重试一定次数后断开衔接;
【功用优化】关于地图也有需求留意的当地,比方会形成电量和网络许多耗费,因而在开发进程中做了功用上进一步优化。首要是在网络数据传输时将数据进行压缩,以及当应用处于后台时及时关闭部分资源。
【代码高雅性】一同,现在的完成方法仅仅能完成功用,但仍有许多不足。比方对WebView的拜访许多当地都复用,因而能够将这个方法单独抽出来进行重用。而且当传递数据后会阅历拜访webView,数据解析,处理等操作,这些步骤关于事务方是彻底不需求知道的,因而能够封装到一个组件里进行屏蔽,完成阻隔。

5.Hold不住怎样和面试官刚?

假如上一个场景你成功Hold住了,面试官此时此刻现已按捺不住想要你的心境了。不过关于一些傲娇的面试官,或许会在最终放个大招,来一两道送命题。
这道题你或许彻底没有预备过,也不知道答案。此时此刻,不必慌。由于这是你的项目,你的主场。你要做的,便是重拾主权,”刚”回去!

项目经验不会说?字节跳动小姐姐手把手教你

这儿的刚,不是胡搅蛮缠,强词夺理。而是以理服人
那么,理从哪里来?
还记得套路满满的可扩展常识树吗?我们回到根结点,从头套路!
下面用一恩亲身事例来讲

小哥哥:关于你刚刚说的websocket,我想多问一句,你是什么时分会中止长衔接呢?

我:(脸色一变,这道题我没背过!但马上恢复神色,我能够扯~)由于长衔接是用于传输实时数据的,所以只需求当地图翻开的时分开端长衔接,地图关闭时关闭长衔接。(看到小哥哥轻轻蹙眉,我马上改口)不过这么做有一些坏处,比方重复翻开长衔接会形成不必要的三次握手,浪费资源;但一向将长衔接置于后台也会有耗电等坏处(和小哥哥一同考虑了一瞬间)因而这儿应该根据产品的性质,假如是一个对长衔接十分必要的体系,应该坚持长衔接一向连着直到他中止,而关于一个不常用此功用的体系,能够完毕使用时中止长衔接。

小哥哥:我以为长衔接能够一向处于后台,由于在不传输数据时长衔接耗费根本不存在,却是重复开关长衔接会形成不必要的耗费。而且监控类项目或许会触及大局报警,就算没有翻开地图也需求取得长衔接推送过来的消息。(我连连允许)一同我提个主张,能够经过心跳检测进行监听,在心跳包没传送时加上重试能够对不稳定的长衔接有一定改进。

我:嗯好,的确对长衔接十分有优点。我这儿也想到一个新的计划……

其实,与面试官”刚”是十分受面试官欢迎的。由于你们或许以后便是同事,在团队中评论与争辩计划是常有的工作,我们对“互刚”十分脍炙人口。所以不明白就问,坦诚清晰,斗胆地说出你的主意,假如你能有理有据并成功说服了面试官,恭喜你,你现已成功成为面试官心中的白月光、朱砂痣了~

写在最终

许多小伙伴对项目面都有一点惊骇,其实能够了解。由于项目面的不确定性较多,对常识调查也比根底面要深入细致,难度也会更大。

但读完此文你是不是觉得项目面也有自己的套路,而且把应用好后面试官会被你玩的死死的~

所以呢,不要怕。把你的项目从头雕刻,好好预备,二面是你的个人Show!穿的好看点,画个美美的妆,用你满满的套路和思维的风暴的牢牢锁住面试官的心吧!

It’s Show Time!

项目经验不会说?字节跳动小姐姐手把手教你


无论哪轮面试,最重要的仍是根底常识沉淀。所以,请不要松懈持续巩固根底常识。

每天都要背!疯狂背,背到头秃!背到口吐白沫!

附上上一篇博文的链接,请向我确保,你每天都在看她:
成功入职字节跳动的小姐姐告知你,Android面试吃透这一篇就没有拿不到的offer!