一下出来4个面试官,这是要舌战群儒啊

老张昨天下午请假了,我猜他就是面试去了。果不其然,今天来了,问老张:昨天面试如何?老张很惊讶的问:你怎么知道我面试去了?迫不及待的说:赶紧说说昨天面试的场景,给我分享分享经验。老张喝口水说,别提了,我一进屋,坐了4位面试官,场景很激烈啊,大有诸葛亮舌战群儒的感觉。

🚝 前面的提问

前面的提问倒还正常,技术面试官问的问题大概有:比如JS闭包啦、CSS优化啦、Vue2与Vue3的对比啦、webpack性能优化啦、React高阶组件啦、Promise核心逻辑啦,等等这些。

然后是一位穿着白衬衣的面试官提问:你能说一说从用户输入url到页面展现的过程吗?

然后是一位女面试官问:你离职的原因啦,你对加班的看法啦,你有什么缺点啦这些。

老张都从容应答。整个过程第四位面试官一直没说话,一直噼里啪啦的敲着电脑。等最后,前3位面试官都说:我没有问题了。第四位面试官抬起头来问道:你能说一下,你开发过npm包吗?这个时候,4位面试官的眼睛一直齐刷刷的盯着老张看,貌似是希望得到什么结果一样。

🚝 舌战4位面试官开始

面试官4:你开发过npm包吗?

老张:开发过,名字叫js-tool-big-box,你可以在npm库搜到,或者掘金网站也能搜到,很火爆的。

2.1 js-tool-big-box的功能 

面试官4:你能说一下js-tool-big-box这个npm包都有哪些功能吗?我看有个big和box的词汇?

老张:目前工具包维护的功能包括时间日期转换、cookie的存取、localStorage的存取、防抖节流的快捷应用、number和字符串的常用方法封装、一些日常的正则匹配验证、复制文字到剪贴板、生成UUID、数组去重、隐藏关键字符串中间字符、获取详细数据类型、检测密码强度、下载文件、打开全屏、获取浏览器详细信息等功能,当然,包括但不限于此,我还在不断维护更新。

2.2 内部引入其他第三方包了吗? 

面试官1:你说了这么多,的确很常用,前端项目里很常用,我承认,但这些都是一些随处可见的公共方法,有些像你说的,cookie localStorage 复制文字到剪贴板 时间日期等等,现在都有第三方库了,你是内部引入了他们的包,然后自己再对外转了一层吗?

老张:当然不是,那会让我的npm包变得不可控,都是我自己寻找的代码,后者之前自己开发项目里用过的通用代码,然后经过验证的,并没有引入他们的包。我希望大家引入js-tool-big-box后,可以少引一些第三方包,可以少写一些冗余的公共方法,可以更少的四处去学习第三方包的使用。

2.3 你开发这个js-tool-big-box工具包的初衷是什么? 

面试官2: 你能说一说,你开发这个工具包的目的或者背景,或者说初衷吗?你为什么要开发这个工具包?目前市面上没有大而全的工具包吗?

老张:我开发js-tool-big-box最初是自己使用的。市面上的确是各种各样的npm工具包,也有比较全面的lodash,但目前来看,我这个工具包的全面性和在项目开发中的实用性,已经超过他们了。

我们在前端项目开发中,往往需要写很多重复的公共方法,往往是这个项目写完,拷到下个项目里,有时候拷丢了,或者是自己记录到自己的博客中,然后再去拷贝这些重复的代码。而有些功能,例如复制文字到剪贴板,大家就需要单独引入工具包,但如果项目组没有通知到位,很可能第二天有同事来了一更新代码,再一启动发现,项目报错了,就会浪费时间去排查问题,然后再安装解决。

所以,我希望开发一个符合我们项目开发实情的npm通用工具包,希望可以让大家少引入几个第三方库,因为你多引入一个第三方库,就需要去寻找这个库的学习文档,需要多处学习。我还希望大家的项目里,可以少写冗余的公共方法,可以把更多的时间用到业务开发中去。提升团队的开发效率。

2.4 你这个js-tool-big-box和lodash比,有什么优势吗? 

面试官3: 你刚才提到了lodash库,这个我用过,那么你可以说一下,你开发这个工具库,和人家的lodash相比,有什么优势吗?

老张:你也说了,那是人家的,而这个js-tool-big-box,那就是我们自己的。

一来:前端技术不断进步不断更新迭代,讲究一个活跃度,虽然jquery很多人已经放弃了,但人家一直在活跃着,但lodash,你可以看看,他已经多久没有更新了,这是不符合我们前端开发的基本意识的。

二来:你跟lodash交流,想和作者微信上面说话,你可以试试,人家会不会搭理你,但js-tool-big-box的作者,平易近人,乐于助人,是个非常不错的开发者,他可以和大家成为朋友。试想一下,你是和东方不败成为朋友练剑更快呢,还是左手拿着武器,右手拿着那本书练的快呢?

三来:js-tool-big-box工具库,融合了更多的日常前端项目中更加实用的,他们所没有的功能,即便他们有的我们也迟早会有,他们不好的,冗余的,我们就不会有。

四来: 这是我们中国人自己的库,我们那么多开发者,为什么总是要把他们的库当成宝贝呢,他们做的好的我们可以借鉴,但我们未来一定会比他们做的更符合我们的前端项目,更符合我们的开发思路。你就说他们那个下划线开头,我就看不上。

2.5 你这都没有开源啊? 

面试官4:我刚才电脑上看了一下,你这都不开源啊,大家会用吗?这样不好吧?

老张:哈哈,你担心作者某一天跑路删npm库吗?那么试问一下,开源了,npm官网的delete按钮,难道就不存在了吗?

我们同是开发者,难道不应该有基本的信任吗?当初大家用jq的时候,很多人还直接引入外部的jq文件呢,大家照样用的飞起,也没有担心过jq被删吗?你们宁愿相信外国人,不相信中国人?

至于开源,这是早晚的事,但现在我还没有太多时间去做这件事,现在这大环境下,还是有份稳定的工作才是重点啊,开源那是必须的,早晚的,毕竟集思才能广益,众人拾柴火焰才能高吗?

我希望我可以入职一个团队,我们可以共同认同这件事,这个项目,这个npm包的的继续开发和维护,以及推广。那个时候,就是开源的东风,那个时候,将会有更多的开发者来关注这个包,我们将会有属于自己的官网。那个时候,这就是全中国前端开发者们最喜欢的网站,没有之一。我们这个团队将会任务重大。

2.6 对你自己有什么提升吗? 

面试官2: 那你能说一说,你开发这个js-tool-big-box工具包,对你自己来说,得到了哪些提升吗?

老张: 开发这个工具包呢,一来是希望给自己节约一些开发时间,让自己的开发或者自己所属的团队开发更加高效。

但在开发过程中,我发现,每增加一个公用方法,就会特别有成就感,尤其是有小伙伴使用以后,告诉自己使用心得或者提出意见自己再完善以后,那种成就感是非常大的。

开发这个项目,维护这个项目,其实也是在不断精进自己前端功底的一个过程,例如获取浏览器详细信息那个方法,我需要统计市面上的浏览器,包括PC的,H5的,手机自带的,一些高频使用APP内置的等,包括混乱的userAgent的解析,这些方法的完成,其实都是在不断提升自己的前端开发功底。

比如在开发检测密码强度,和给关键字符串中间加星号显示的时候,一般都是中间加星号或者加点,但我根据自己的经验判断,添加了更多的丰富功能,甚至和一些业务场景相结合,添加了表情符。我觉得,虽然是一个公共方法通用npm库,但其实也在提升着自己的开发业务能力。

在不断推广npm包的时候,我认识了更多的小伙伴,他们给我提出建议,帮我出谋划策,我也在不断地锻炼着自己的运营能力。从开发项目,到推广,到完善,到结合实际前端项目,再到认识更多的朋友。让我发现,这个npm包不仅仅是生硬的一个方法库,他也在实实在在的提升着我对整个项目生命周期的理解以及我整体的认知能力。

2.7 有什么缺点吗? 

面试官3:那你能说一说,你这工具库,有什么缺点吗?

老张:目前来看,缺点就是还没来得及创建一个API学习的网站,使用者们还需要去博客里看如何使用。不过这也怎么加了用户的粘性,因为博客网站已经很成熟了,可以和使用者们高效的沟通,而且也可以通过微信沟通,我希望早些把学习网站搞出来,让使用者们使用的时候方便一些,这样开发就更加高效了。

然后还有一个缺点就是,目前只有我和另外一个小伙伴在维护,人手相对较少,希望未来可以有更大的团队可以一起参与进来,使我们这个中国人自己的库可以更加健壮,服务于更多的前端开发者们。

🚝 结尾 

当4位面试官提问结束后,会议室有个门帘,大家都没有注意。这个时候,后面走出了一位上了年纪的老者。老者咳嗽了一声。然后4位面试官都齐刷刷的站了起来。然后只见老者点了点头,4位面试官就都纷纷坐下了。

老者说:你刚才说的,做全中国前端开发者最喜欢的学习网站,我很感兴趣,然后和老张握了握手。转头对着刚才那个女面试官轻声了些什么,老张有没有听见。然后老者就走出了会议室。

面试结束后,女面试官把老张送出大门,添加了VX,然后说:张哥,你等一下,我们董事长说过会儿开着新提的“燕京U8”送你回去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧安防/边缘计算EasyCVR视频汇聚网关:EasySearch无法探测到服务器如何处理?

安防监控EasyCVR智能边缘网关/视频汇聚网关/视频网关属于软硬一体的边缘计算硬件,可提供多协议(RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK)的设备接入、音视频采集、视频转码、处理、分发等服务,系统具备实时…

Redis-事务-watch-unwatch

文章目录 1、监视key2、提交事务 1、监视key 打开两个窗口,第一个窗口先监视key,然后开始事务,然后再打开第二个窗口,修改balance为0 2、提交事务 此时事务被打断

playwright vscode 插件源码解析

Playwright vscode插件主要功能 Playwright是微软开发的一款主要用于UI自动化测试的工具,在vscode中上安装playwright vscode插件,可以运行,录制UI自动化测试。 playwright vscode插件主要包括两块功能,功能一是在Test Explorer中…

探索 Java 死锁:常见原因与解决方案

什么是死锁? 死锁是一种特殊的情况,发生在两个或多个线程彼此等待对方持有的资源,从而陷入无限等待的状态。具体而言,死锁通常涉及以下四个必要条件: 互斥条件:至少有一个资源被一个线程独占。持有并等待…

解决Microsoft Edge浏览器无法使用英文翻译功能

一、问题描述 原来我们使用的Microsoft Edge浏览器是可以对英文界面选择翻译为中文的;但是最近该浏览器更新过后右上角的翻译图标找不到了,无法翻译英文界面内容。 二、解决方法 2.1、打开浏览器的设置界面 2.2、选择语言 2.3、将首选语言下除中文外的…

【2024德国工作】蓝卡攻略:人在中国,怎么去德国工作?

德国工作签证解析 外国人只要拥有符合德国劳动法的劳动合同,工资符合当地标准(非紧缺专业,税前工资一般需达到49600欧元),并且具备一定的外语能力,就可以申请德国境内工作签证!不申请者还需要有…

【electron 5】electron将获取的Uint8Array转为中文

使用protobufjs: 安装: yarn add global protobufjs yarn add global protobufjs-cli// 将项目中的*.proto文件编译成json文件 npx pbjs -t json electron/main/proto/*.proto > electron/main/proto/proto.json可以在src/proto目录下生成一个proto.…

国内Mac安装Homebrew方法

文章目录 前言步骤 参考:https://blog.csdn.net/itwangyang520/article/details/134125435 前言 今天尝试下载git,官方给的建议是使用Homebrew下载,但发现新电脑里没有,于是尝试Homebrew下载,但发现Homebrew不存在&am…

黑曼巴精神不死!Mamba 2 出世,性能狂飙8倍

年前,Mamba 被 ICLR 拒稿的消息曾引起轩然大波。然而,Mamba作者在6月初又发布了 Mamba 2 架构,这次,Mamba-2 顺利地拿下 ICML。就连 Nvidia 都被吸引,都用它重新训练了GPT3模型。 Transformer vs Mamba vs Mamba2 : 比…

一文读懂交换机MAC地址表:五大关键点,图解21步

HCIA 新班开课了华为HCIA课程介绍苏州面授班 | 全国直播班循环开班,免费重学前言 什么是MAC地址表?MAC地址表有什么作用?MAC地址表里面包含了哪些要素?今天带你好好唠唠。 我们以一个案例为例: 如上图:PC1和PC2通…

C#——堆栈和队列详情

堆栈和队列 堆栈 堆栈类表示一个后进先出的对象集合,当需要对项目进行后进先出的访问时,则可以使用堆栈。向堆栈中添加元素称为推入元素,从堆栈中移除元素称为弹出元素。 关键字: Stack stack常用属性 : 属性 描述Count获取堆栈中包含的…

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person new Object(); p…

昇思25天学习打卡营第1天|认识MindSpore

MindSpore 基本介绍 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 易开发:API友好、调试难度低高效执行:包括计算效率、数据预处理效率和分布式训练效率全场景:框架同时支持云、…

LabVIEW操作系列

目的:初学LabVIEW,做记录 文章目录 前言一、LabVIEW操作界面1.1 新建vi1.2 控件1.3 加法案例 二、编程特点2.1 特点2.2 实现按顺序执行 三、程序结构3.1 平铺式顺序结构3.2 循环结构3.2.1 For循环3.2.2 While循环3.2.3 中途停止For循环3.2.4 中途停止Whi…

区块链实验室(37) - 交叉编译百度xuperchain for arm64

纠结了很久,终于成功编译xuperchain for arm64。踩到1个坑,说明如下。 1、官方文档是这么说的:go语言版本推荐1.5-1.8 2、但是同一个页面,又是这么说的:不推荐使用1.11之前的版本。 3、问题来了:用什么版本…

数据库拆分

1.1 数据库拆分的背景和意义 在互联网和大数据时代,企业和应用程序需要处理海量数据并提供高并发访问能力。传统的单一数据库架构在面对大规模数据和高并发请求时,逐渐暴露出性能瓶颈、扩展性不足、可用性差和维护成本高等问题。为了解决这些问题&#…

用于世界上最先进的医疗应用的精密电阻器

EAK的高性能电阻器使医疗产品设计人员能够继续改善全球患者的生活质量。我们的电阻器专为用于医疗诊断、治疗和预防的各种产品而设计。从小型植入式和非侵入性设备到大型诊断成像设备,医疗制造商之所以选择EAK 电阻器,是因为操作环境是高电压和磁场&…

ES内存溢出报错问题解决方案

博主有话说&#xff1a;该博文根据实际案例编写&#xff0c;在编写过程中将敏感信息进行替换&#xff0c;可能存在矛盾的地方&#xff0c;望见谅 1 错误详情 [typecircuit_breaking_exception, reason[parent] Data too large, data for [<http_request>] would be [1256…

Java--Data类

1.Data类 java.util.Date.表示指定的时间信息&#xff0c;不支持国际化 构造方法 new Date()&#xff1a;当前系统日期和时间 new Date(long)&#xff1a;给定日期和时间 主要方法&#xff1a; after(Date):判断当前日期对象是否在给定日期对象之后 before(Date):判断当前日期…

(上位机APP开发)调用华为云属性修改API接口修改设备属性

一、功能说明 通过调用华为云IOT提供的属性修改API接口,给设备下发属性修改消息。 API接口地址:https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html 此接口支持在线调试:https://console.huaweicloud.com/apiexplorer/#/openapi/IoTDA/doc?api=UpdatePrope…