面试大厂反拷打指南(最佳实践)

先前我分享了《面试大厂防拷打指南(字节&腾讯)》这一篇文章,收到了很多人的收藏,但是那篇文章更大程度是一个概括,对很多点没有细说,我准备将其中值得细说的点做一些详细的阐述,那么这一篇,就讲解我们反拷打的最佳实践(纯个人理解,不喜勿喷)。

最佳实践

我理解的最佳实践,就是用最合适的方法完成一件事情。其实对于绝大多数人的最佳实践就是做项目,把一个项目做到极致

细说最佳实践之前,我们的思维必须要转变过来,不再是我完成这个项目的功能就够了,这是Demo行为,真正的项目是有完整的生命周期,项目是螺旋上升、会暴露新的问题、并不断迭代优化的。

把一个项目做到极致,带来的主要收益有技术深度、架构思维、项目思维、简历亮眼,学习动力。前四者会让面试官对你刮目相看,提高你面试的容错,使得你在手撕和八股环节失误也可能通过面试。最后一者使你可持续学习,不对学习新技术产生消极情绪。

比如你的网站首屏时间有10s以上,卡得不行,于是想优化首屏时间,你想了好多办法找优化方法。发现可以用到Lighthouse观察性能指标,记录首屏时间。可以用到Gzip、Brotli压缩dist,降低首屏时间。在这个过程中,你认识了性能指标监控的工具,你知道了Gzip和Brotli这两个压缩算法,你的简历又有新技术可以写。你的首屏时间优化到了1s,所以你得到了正反馈更想学新技术优化你的网站,全是收益啊。在技术深度上,你获得了提升,深挖了优化性能的方式方法。在项目思维上,你意识到做项目不仅仅是完成功能,更要注重项目的优化和迭代。在简历上,你又可以添上浓墨重彩的一笔,让面试官觉得你有点东西。那么有的同学就问了,架构思维呢???架构思维的提升当然没有那么容易,可能只在项目涉及到真正的架构迁移的时候会有提升。针对前端架构来说,比如你的项目一开始基于Vue2,后面迁移到Vue3。又把前后台分离,前台使用Nuxt,后台使用Vue3。那么走过架构迁移这段路的你,在未来开始一段新项目,就会首先想,这个项目是做CSR、SSR合适,还是SSG、又或者是ISR、ESR?这样的架构思维,让你在一开始就能把项目设计为一个较为优秀的架构,避免不必要的迁移。同时面试官又看到你的亮点,这小子有点东西啊,架构的思维都初窥门径了。

我的帖子《面试大厂防拷打指南(字节&腾讯)》讲到,优秀的项目和不起眼的项目,在面试中是有明显区别的,甚至会影响到八股的占比,如果想少被考察八股,就要在项目上吸引到面试官。但就我在牛客上观察的这些简历来说,大部分简历的问题就在于需要通过几个项目甚至专业技能和获得奖项来写满一页简历,但是优秀的项目一页简历根本就写不下,只能证明你的项目挖得不够深,只能用其他东西来堆叠。恰恰这又是最忌讳的,毕竟你的项目都是一些CRUD和技术的堆叠,CRUD没什么可聊的,堆叠的技术可能你自己都不懂你项目为什么用到这些技术,让你讲也讲不出个所以然,面试官一挖深一点你就只能面红耳赤,叽里咕噜连自己都不知道自己在说啥玩意。相信大家或多或少都在面试中遇到这种窘境,被面试官问深了项目,来到牛客说被拷打麻了,但是你写上去就要接受拷打,还是那句话,简历上写项目的优化是一件高风险高回报的事。

如何让自己的项目区别于普通的项目,脱颖而出。又如何让面试官对你的项目感兴趣,被吸引?前者可以通过性能优化、稳定性建设、工程化来实现。后者可以通过面试介绍项目时埋悬念来实现。我们在这篇文章只讲前者。

项目优化

你是否被切图仔这个称呼困扰?前端真的只有切图吗?我们就做不到其他的吗?我们就只会写写页面,调用接口,被后端嘲讽没有项目的架构思维吗?可能前面说的严重了,但是想要进入大厂,如果你真的只会写页面调接口,那你就是完全的不合格,因为这些事情后端学两天也能做,你有啥核心竞争力?合格的前端能掌握性能优化和简单的工程化。优秀的前端对稳定性和前端的渲染架构、后端的微服务架构也有深刻认识。做项目的优化,一定要知道几件事情。一是我们为什么要选用这个方式来优化,二是这个方式用了之后带来了什么收益(具体量化指标),怎么去实现优化在讲解时反而不那么重要了,因为你向上汇报的时候,不可能把每一个细节都说完,时间也不够你说这么细,但是你必须要深挖涉及到的所有的原理,脑子里有个大概的实现流程,避免面试官追问拷打。接下来我们细说如何去优化。

性能

项目的性能可以分为前端和后端的优化来实现。有的同学就问了,我是干前端的,我优化啥后端啊?现在大厂有前端客户端合并为大前端、前端后端不分离做全栈的趋势。牛友们要顺应趋势,选一个副方向,就选后端来说,可以不专精后端,但是要学到后端的思维,也避免被后端说前端仔只会切图,架构项目的全是后端这类的话。

后端性能优化

所以先讲后端,我们不管是Node.js或者是Java Spring Boot写后端,Redis是百分之百可以用到的,内存这个东西一定要利用好。比如我们项目里面涉及到非图片视频这种大资源的请求,比如文本,都可以通过Redis存到内存里,快存快取,狠狠优化它一笔。还可以通过MQ异步处理耗时操作比如文件的上传。后端返回的数据做一些压缩也是可以的。

前端性能优化

主要的性能指标是首屏、FCP(首次内容绘制)、LCP(最大内容绘制)、CLS(累积布局偏移)等。可以通过以下几个方面实现。

  1. 架构调整:如果你的项目是Vue2 VueCLI,可以考虑迁移到Vue3 Vite,更可以考虑迁移到Nuxt做SSR,这样性能会有比较大的提升。
  2. 打包优化:针对包做一些Tree Shaking,Gzip和Brotli压缩,代码分割(Chunk),并且对静态资源比如图片进行一些压缩,格式上的转换。
  3. 代码结构:对一些库,做按需引入,或者使用CDN引入,避免直接引入全部的库。并且路由做懒加载,图片也做一些懒加载。还可以对上传的图片进行一次压缩,或者在后端进行一次压缩,图片一般是请求耗时的大头。当然也可以通过先前端压缩然后传到CDN上,通过CDN获取图片,这样更快,但是这种打法比较吃经济。
  4. 网络请求:可以抓包看看自己请求,应该大多是HTTP1.1,可以使用HTTP2.0,性能会有一个比较大的提升。使用Promise.all()合并请求,减少网络延迟。

稳定性

稳定性的知识我们在个人开发当中是接触比较少的,但是大厂很注重稳定性的建设,毕竟一个项目上线之后不出问题才是最重要的,不然会严重破坏用户体验。因为我在快手实习是做的客户端稳定性,所以我对稳定性有一些自己的理解。下面简单聊一下,给大家构建一个简单的稳定性思维即可。

一个项目,必须平稳运行,不能一上线,这里出个判空不到位调用了undefined整个js崩了,整个页面没有数据只有壳子,那里出个组件问题,直接页面的壳子都没了。所以在线下,我们要想办法把问题兜住,并且通过各种测试来尝试寻找漏洞。针对个人开发来说的话,该做的判空处理必须做好,库的兼容也要做好,上线前尽量用各大主流浏览器都试试,看看页面有没有问题,不是说IE这种都要试试,Chrome、Safari这种主流的即可。要让面试官看到你有稳定性的思维,认为你是个靠谱的人,放心以后能把事情交给你做。比如之前我碰到网站的日期2025-03-02这种格式在Safari浏览器是NaN-NaN-NaN,这种问题带到线上有很大的问题。所以必须第一时间止损,发现是new Date()在Safari浏览器就是不能以xxxx-xx-xx的格式表示日期,于是改为xxxx/xx/xx,及时止损,事后复盘记录问题归因,出现类似问题的时候可以快速直接判断出是浏览器兼容问题,避免花大量时间去排查。

总结一下个人开发中的稳定性处理就是上线前该做的兜底做到位,构建测试方法论,尽量不把问题带到线上,上线后关注项目问题,出现问题后及时止损并进行复盘处理。想要详细了解稳定性的,可以去了解一下灰度发布、强弱依赖识别与降级、隔离与容灾、埋点上报、实时监控报警等知识。

工程化

在大厂实习过的同学,应该或多或少都接触过工程化,比如发一个MR,流水线会对代码自动编译检查,检查后还需要CR、提测,所有流程都过了才能合入,这是一个典型的工程化。但是这种工程化可能离我们个人开发太远了,我举个离我们比较近的例子,我们每次开发完项目都要打包然后推到服务器部署的指定位置。就算是一次小的bugfix都要如此,是不是太麻烦了?动手能力强的同学可能就会开发一个脚本,每次npm run build后自动把dist推到服务器指定位置,不用我们手动去推了,这就是一个简单的工程化。还可以利用Lighthouse和Visualizer再接入AI,每次打包后自动分析评分、包体分布,给出优化建议,这也是一个简单的工程化。工程化的意义在我看来就是提高我们的效率,让我们更加专注在业务上,避免事事亲力亲为,解放生产力。

总结

我依然要再说一次,有关最佳实践就是去做项目,并对这个项目保持热爱,把这个项目优化到极致,把你用到的技术深挖到你不惧任何拷打。面试官看到你对待项目的这种态度,是会眼前一亮的,首先就会认为你是个靠谱的人。不是东做一个项目,西做一个项目,甚至可能没有一个项目有60分,而是把一个项目做到了90分甚至100分。这次的《面试大厂反拷打指南》就到这里,本文更侧重于分享对待项目的思维,在于具体实践上没有细致描述,后续会开技术专栏讲解项目优化的具体实践。如果有想要动手实践的牛友,可以先去搜索一下项目优化某个指标需要用到的技术,然后去看对应技术的官方文档即可。希望能对各位彦祖亦菲们有所启发,转变对待项目的思维。大家可以在评论区留下对《面试大厂反拷打指南》下一期专题的内容建议,也希望大家能点赞收藏支持一下,你们的支持是我发帖的最大的动力。(发现错误麻烦指出,错必纠)#牛客AI配图神器#

#实习##秋招##面试##简历中的项目经历要怎么写##牛客创作赏金赛#
面试大厂反拷打指南 文章被收录于专栏

介绍面试大厂过程中各种有可能被拷打的点,并且通过从思维层面上的讲解,根本帮助读者们改变面试思维,助推读者实现反拷打。

全部评论
项目优化具体怎么做
点赞 回复 分享
发布于 04-07 08:02 天津
干货
点赞 回复 分享
发布于 03-22 21:07 重庆
主播主播,真诚发问,会了你的这些就可以过面吗
点赞 回复 分享
发布于 03-20 14:33 浙江
纯干货分享
点赞 回复 分享
发布于 03-11 08:58 湖北
谢谢
点赞 回复 分享
发布于 03-02 22:09 广东
点赞 回复 分享
发布于 03-02 21:53 广东

相关推荐

#程序员##牛客创作赏金赛##你上一次加班是什么时候?##23届找工作求助阵地##程序员##当你面对裁员会如何?##Java#文章首发到公众号:月伴飞鱼,每天分享程序员职场经验!大家好呀,我是飞鱼。打工人经常面对加班的困扰,为了健康,我们需要一些小技巧来抵消加班带来的伤害。大家不要觉得自己年轻/健身/身体好可以随便造,猝死是单发的,单次的程度足够,是不管你底子厚不厚的。下面是一些996打工人的防猝死指南!1、拒绝24小时待机,用番茄钟工作法(25分钟干活+5分钟放空),强行打断代码上头状态。❝每小时必须站起来晃悠2分钟(接水/上厕所/假装看风景),拯救僵硬的颈椎腰椎。下班后电脑开飞行模式,真有急事?让领导先打钱再说话。2、办公室保命三件套:❝人体工学椅(公司不配就自己买,比治腰椎便宜)。显示器支架(屏幕顶端与视线齐平)、护腕鼠标垫(腱鞘炎发作时哭都来不及)。3、 每天灌满2升水(设每小时喝水闹钟)。4、下午4点后别碰咖啡奶茶,心慌时改喝黄芪枸杞茶,常年熬夜的记得补维生素B族。❝多吃水果和蔬菜,防止便秘,大便秘结排便时增加腹压影响心脏,易诱发冠心病急性发作。5、摸鱼式锻炼大法:❝开会时偷偷绷脚尖练小腿,等代码编译时深蹲5个(同事笑你就拉他一起),周末逼自己出门遛弯1小时(晒太阳防抑郁+补钙)。学会科学摸鱼,不要连续工作,工作数小时后,要短暂休息。交替式休息消除疲劳最有效,如左撇子就多活动右侧肢体,动脑多就多活动身体/肩颈。7、带薪养生实操技巧:❝排需求工期多留20%缓冲时间,领导骂人时默念工资含精神补偿费,下班后物理屏蔽工作群(消息免打扰+手机扔沙发)。8、每年必做体检项目:❝心脏彩超(查心律失常)、颈动脉超声(防血管堵塞)、甲状腺功能(压力大易中招)、肝功能+血糖血脂(年轻也要查!)。9、脸皮要厚一点:❝避免在工作中产生过强的情绪,无论是愤怒、焦虑、还是紧张,尽量保持心情平稳舒展。10、疲劳后健身很危险:❝类似事件发生过很多次,累了的最好健身方式是休息,疲劳之后立即运动,容易导致运动性碎死。卷王们清醒点!别仗着年轻就狂肝代码、靠咖啡续命、一坐8小时不挪窝。公司离了你分分钟招新人,你垮了全家都得哭!从今天开始,把喘气设为每日首要KPI!想看技术文章的,可以去我的个人网站:http://hardyfish.top/。目前网站的内容足够应付基础面试(P7)了!
点赞 评论 收藏
分享
评论
31
61
分享

创作者周榜

更多
牛客网
牛客企业服务