2025年4月我的前端面试总结

2025年3月,很荣幸,我也加入了跳槽求职的大部队 ,虽然招聘热潮没有每年年初那样疯狂,但是还是看得出很多公司都在大量的求贤,和以往的跳槽不同,这次我主要通过猎头去寻找面试机会,因为在上一份工作中从猎头那里尝到了一点甜头,那就是会帮你要薪资嘛 。

但是也有不好的地方,我把我的简历在猎聘等招聘平台上公开后,每天都有不计其数的猎头打电话过来推荐职位,而且每个猎头都要加到你的微信,可能会出现的问题是,他们给你推荐的职位不一定是你喜欢的公司,也不一定是适合你的,有的公司当你去面试了才发现你并不喜欢,这就浪费了双方的时间成本。

所以最近面了很多家,大厂、中厂、小厂、创业的都面过,见识到了各种面试官,也被问到各种面试题,也收到几个offer,但自己满意的确甚少,回想最近的经历,想做一个总结,总结一下面试中常问的一些问题,由于篇幅原因,【丸整情看文末】

面试前

简历准备

简历是你进⼊⾯试的敲⻔砖,也是留给意向公司的第⼀印象,所以这个很重要,必须在这上⾯做⾜了⽂章,⼀份优秀的 ⾯试简历是整个⾯试成败的重中之重,我们会详细分析如何准备简历才能保证简历不被刷掉。

简历通常有这⼏部分构成:

  1. 基本资料
  2. 专业技能
  3. ⼯作经历
  4. 项⽬经历
  5. 教育背景

我们会逐⼀进⾏分析。

准备简历模板

万事开头难,简历的编写如果从头开始需要浪费很多时间,其实最快速也最聪明的办法就是先找⼀份还不错的简历模板,之后我们只需要填写信息即可。

简历模板的选择很讲究,有些简历基本不看内容就会被刷掉,这些简历⼀般会对⾯试官进⾏视觉攻击,让简历给⾯试官 的第⼀印象就是反感。

有两种坑爹的简历模板:

⼀种是经典简历模板,真是堪称『经典』,这种简历模板在我上⼩学的时候就有了,以现在的眼光看有点不够看了,配 ⾊也⽐较『魔幻』,加上表格类的简历属于low到底端的简历类型,基本上扫⼀眼就扔了,这种简历只需要3秒钟就能被 ⾯试官扔到垃圾堆。

准备专业技能

对于程序员的专业技能其实就是技术栈,对于⾃⼰的技术栈如何描述是个很难的问题,⽐如什么算是精通?什么算是了 解?什么是熟悉?

关于对技术技能的描述有很多种,有五种的也有三种的,⽽且每个⼈对词汇的理解都不⼀样,我结合相关专家的理解和 ⾃⼰的理解来简单阐述下描述词汇的区别,我们这⾥只讲三种的了解、熟悉、精通。

了解:使⽤过某⼀项技术,能在别⼈指导下完成⼯作,但不能胜任复杂⼯作,也不能独⽴解决问题。

熟悉:⼤量运⽤过的某⼀项技术,能独⽴完成⼯作,且能独⽴完成有⼀定复杂度的⼯作,在技术的应⽤层⾯不会有 太⼤问题,甚⾄理解⼀点原理。

精通:不仅可以运⽤某⼀⻔技术完成复杂项⽬,⽽且理解这项技术背后的原理,可以对此技术进⾏⼆次开发,甚⾄ 本身就是技术源码的贡献者。

我们就以Vue这个框架为例,如果你可以⽤vue写⼀些简单的⻚⾯,单独完成某⼏个⻚⾯的开发,但是⽆法脱离公司脚 ⼿架⼯作,也⽆法独⽴从0完成⼀个有⼀定复杂度的项⽬,只能称之为了解。

如果你有⼤量运⽤vue的经验,有从0独⽴完成⼀定复杂度项⽬的能⼒,可以完全脱离脚⼿架进⾏开发,且对vue的原理 有⼀定的了解,可以称之为熟悉。

如果你⽤vue完成过复杂度很⾼的项⽬,⽽且⾮常熟悉vue的原理,是vue源码的主要贡献者,亦或者根据vue源码进⾏ 过魔改(⽐如mpvue),你可以称得上精通。

那么有两个坑是候选⼈经常犯的,『杂』和『精』,这种两个坑⼤量集中在应届⽣和刚毕业每两年的新⼿身上,其主要 特点是『急于表现⾃我』、『对技术深度与⼴度出现⽆知⽽导致的过度⾃信』。

⾸先说说杂,⽐如你要应聘⼀个Java后端,⽼⽼实实把⾃⼰的java技术栈写好就⾏了,强调⼀下⾃⼰擅⻓什么即可,最 好专精某领域⽐如『⾼并发』、『⾼可⽤』等等,这个时候⼀些简历⾮要给⾃⼰加戏,⾃⼰会的不会的⼀股脑往上堆, 什么逆向、密码学、图形、驱动、AI都要体现出来,越杂越好,这种简历给⼈的印象就是个什么都不懂的半吊⼦。

再说说精,⼀个刚毕业的应届⽣,出来简历就各种精通,精通Java、精通Java虚拟机、精通spring全家桶、精通kafka 等等,请放⼼,这种简历是不会没头没脑投过来了,这种在⼤学⾥就精通各种的天才早被他的各种学⻓介绍进了⼤⼚或 者外企做某某Star重点培养了,往往看到的这种也是半吊⼦。

再给⼤家⼀个技术栈模板:

这样写的后果就在于让⾯试官⼀眼就看出你是个吹⽜的半吊⼦,那些各种精通的全才在业界早就出名了,根本不可能还 在投简历。

面试题

package.json⾥⾯sideEffects属性的作⽤是啥

sideEffects作⽤

sideEffects 是 package.json ⽂件中的⼀个字段,它⽤于指定⼀个模块是否具有副作⽤。副作⽤是指模块在加载时会执⾏⼀些特定的操作,⽽不仅仅是导出⼀个函数或对象。

sideEffects 字段可以有以下⼏种取值:

• true :表⽰模块具有副作⽤,即模块加载时会执⾏⼀些操作。这是默认值,如果没有在package.json 中明确指定 sideEffects 字段,则假设为 true 。

• false :表⽰模块没有副作⽤,即模块加载时不会执⾏任何操作。这意味着该模块只导出函数、对象或其他静态内容,并且不依赖于其他模块的副作⽤。

• 数组:可以将模块的具体⽂件路径或⽂件匹配模式(使⽤glob模式)列在数组中,以指定哪些⽂件具有副作⽤,哪些⽂件没有副作⽤。例如, ["./src/.js", "!./src/utils/.js"] 表⽰ src ⽬录下的所有 .js ⽂件都具有副作⽤,但是 src/utils ⽬录下的 .js ⽂件没有副作⽤。 使⽤ sideEffects 字段可以帮助构建⼯具(如Webpack)进⾏优化。如果模块没有副作⽤,构建⼯具可以进⾏更好的摇树优化(treeshaking),即只保留项⽬所需的代码,⽽将未使⽤的代码消除,从⽽减⼩最终打包⽂件的⼤⼩。

注意:在使⽤ sideEffects 字段时,需要确保你的代码确实没有副作⽤,否则可能会导致意外的⾏为。

sideEffects是如何辅助webpack进⾏优化的?

sideEffects 字段可以帮助Webpack进⾏摇树优化(TreeShaking),从⽽减⼩最终打包⽂件的⼤⼩。摇树优化是指只保留项⽬所需的代码,⽽将未使⽤的代码消除。

当Webpack打包时,它会通过静态分析来确定哪些导⼊的模块实际上被使⽤了,然后只保留这些被使⽤的代码,并将未使⽤的代码从最终的打包⽂件中删除。

在这个过程中,Webpack会检查模块的 sideEffects 字段。如果⼀个模块具有 sideEffects 字段,并且设置为 false ,Webpack会认为该模块没有副作⽤。Webpack会在摇树优化过程中将未使⽤的导出从该模块中删除,因为它不会影响项⽬的功能。

然⽽,如果⼀个模块具有 sideEffects 字段,并且设置为 true 或是⼀个数组,Webpack会认为该模块具有副作⽤。在摇树优化过程中,Webpack会保留该模块的所有导出,因为它不能确定哪些代码是副作⽤的。这样可以确保项⽬中需要的副作⽤代码不会被误删除。

因此,通过正确使⽤ sideEffects 字段,可以帮助Webpack更好地优化打包⽂件,减少不必要的代码,提⾼应⽤程序的性能。

git仓库迁移应该怎么操作

如果你想迁移仓库并保留原始仓库的所有提交历史、分⽀和标签,你可以使⽤以下步骤:

⽅法⼀:使⽤git clone 和git push

  1. 在仓库B中创建新的仓库。
  2. 在本地克隆仓库A:

使⽤--mirror 选项克隆仓库会保留所有分⽀、标签和提交历史。

  1. 修改远程仓库地址为仓库B:

  1. 推送到仓库B:

⽅法⼆:使⽤git bundle

  1. 在仓库A中创建bundle⽂件:

  1. 将repoA.bundle ⽂件传输到仓库B所在位置。

  2. 在仓库B中克隆:

这两种⽅法都会保留所有分⽀、标签和提交历史。选择哪种⽅法取决于你的具体需求和迁移环境。

注意:

• 使⽤--mirror 或--all 选项在git clone 或git bundle 中时,会将所有的分⽀和 标签复制到⽬标仓库。

• 在执⾏之前,请确保仓库B是空的或者是⼀个你可以覆盖的⽬标仓库,因为这些操作会覆盖⽬标仓 库的内容。

• 如果仓库A中包含⼦模块,你可能需要额外处理⼦模块的迁移。

【戳着获取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值