三年经验前端社招——慧择网

大家好,我是若川。最近组织了源码共读活动《1个月,200+人,一起读了4周源码》,已经有超50+人提交了笔记,群里已经有超1200人,感兴趣的可以点此链接扫码加我微信 ruochuan12

本文经作者@lxcan 授权转载,未经授权请勿直接转载。
原文标题:《三年经验前端社招——慧择网》
原文链接:https://zhuanlan.zhihu.com/p/405690519
文末点击阅读原文直达

一面

1、自我介绍

2、以往公司介绍,项目介绍【描述】

3、算法题,有n阶楼梯,一次可以走1步或2步,问有多少种走法。比如有3阶,可以 111 12 21 总共3种走法【编程】
考点:斐波那契数列解法
分析:
(1)n=0和n=1 的时候,没有其他选择,F(0)=0;F(1)=1
(2)n>=2 的时候就变复杂起来,这时候可以操作的步骤也就2种,也就是走1步 (n-1) 与走2步 (n-2)
所以可以得到 F(n) = F(n-1) + F(n-2) ,从当前状态转为下一状态的通用算法即可。
(3)验证,使用2以上的数字验证几次
实现方式:
(1)递归
(2)循环迭代
(3)动态规划(递归+缓存)

4、JS数据类型有哪些?它们在内存里面的模型是怎样的,堆和栈有什么区别?【描述】
原始数据类型,存放在 栈内存中
number string boolean null undefined symbol
引用数据类型,存放在 堆内存中
object (细分为 object array function)

栈内存

  • 存储原始数据类型

  • 按值访问

  • 存储的值大小固定

  • 由系统自动分配内存空间

  • 空间小,运行效率高

  • 先进后出,后进先出

堆内存

  • 存储引用数据类型

  • 按引用地址访问

  • 存储的值大小不定,可动态调整

  • 由代码进行指定分配

  • 空间大,运行效率相对较低

  • 无序存储,可根据引用直接获取

5、有三套样式,大中小,怎么实现样式切换?主题切换怎么做?【描述】【举例】

之前做过的主题切换思路:
(1)在 static 目录下新建一个 styles 文件夹,在 styles 下新建一个 theme.css 文件,将需要替换的 CSS 声明在此文件中
(2)新建 theme-colors.js,用于声明所有可选的主题,每种颜色都对应一个关键词如 'primaryBtn' 等,方便区分
(3)通过 ajax 获取 theme.css ,先将颜色值替换为关键词,比如将 '#67c23a' 替换为 'primaryBtn'
(4)把关键词再换回刚刚拿到的最新主题相应的颜色值,并在页面上添加 style 标签

6、页面响应式做过吗,实现思路?用几套代码实现的?【描述】

7、混合式app做过吗【描述】

8、React做过吗【描述】

9、最近在学什么技术?【描述】
Vue 3.0
React 基础用法
下阶段学习:
Node.js 全栈开发
泛客户端开发(uni-app、React Native、Flutter)
计算机基础、网络、数据结构、算法

10、往后的职业规划是怎样的?【描述】

11、你有什么问题要问我的?【描述】

二面

1、说一下JS原型【描述】
5条原型规则:

  1. 所有的引用类型(数组、对象、函数),都具有对象特性,即可自由扩展属性(除了"null")以外

  2. 所有的引用类型(数组、对象、函数),都有一个__proto__ (隐式原型)属性,属性值是一个普通的对象

  3. 所有的函数,都有一个 prototype (显式原型)属性,属性值也是一个普通的对象

  4. 所有的引用类型(数组、对象、函数),__proto__ 属性值指向它的构造函数的 prototype 属性值

  5. 当试图得到一个对象(引用类型)的某个属性时,如果这个对象本身没有这个属性,那么会去它的 __proto__(即它的构造函数的 prototype)中寻找

2、instanceof 原理,怎么实现的?【描述】【伪代码】
instanceof 可以正确的判断对象的类型,因为内部机制是通过判断 对象的原型链 中是不是能找到 类型的 prototype。

手写实现instanceof

function myInstanceof(left, right) {
    var prototype = right.prototype;
    left = left.__proto__;
    while (true) {
        if (left === null || left === undefined) return false;
        if (left === prototype) return true;
        left = left.__proto__;
    }
}
console.log(myInstanceof(o1, M)); // true
console.log(myInstanceof(o1, Object)); // true
console.log(myInstanceof([1, 2], Array)); // true
console.log(myInstanceof({ a: 1 }, Array)); // false

实现分析:

  • 首先获取右边参数 类型的显式原型

  • 然后获得左边参数 对象的隐式原型

  • 然后一直循环判断 对象的隐式原型 是否等于 类型的显式原型,直到 对象的隐式原型为 null,因为原型链最终为 null

3、项目使用的是 原生小程序 还是 uni-app 小程序【描述】

4、你说做过SEO优化,做了哪些优化?【描述】

5、vue3有哪些新特性,它做了什么优化【描述】
Vue 3.0 性能提升:(1)响应式系统升级

  • Vue.js 2.x 中响应式系统的核心是 Object.defineProperty

  • Vue.js 3.0 中使用 Proxy 对象重写了响应式系统

    • 可以监听动态新增的属性

    • 可以监听删除的属性

    • 可以监听数组的索引和 length 属性

(2)编译优化

  • Vue.js 2.x 中通过标记静态根节点,优化 diff 过程

  • Vue.js 3.0 中标记和提升所有的静态节点,diff 的时候只需要对比动态节点内容

    • Fragments 片段,模板中可以直接放文本内容或同级标签(升级 vetur 插件)

    • 静态节点提升到 render 函数外部,只在初始化时执行一次,再次render无需再次执行

    • Patch flag,标记动态节点(记录节点内容、节点属性),diff时跳过静态根节点 只需关心动态节点内容

    • 缓存事件处理函数,减少了不必要的更新操作

(3)源码体积的优化

  • Vue.js 3.0 中移除了一些不常用的 API。例如:inline-template / filter 等

  • Tree-shaking

6、TypeScript 有了解吗?说下它的特性和优缺点【描述】
TypeScript 是 JavaScript 的一个超集(扩展集),就是在 JS 的基础上多出一些扩展特性,这些扩展特性包括:强大的类型系统、对 ES6+ 的良好支持。TS 最终会被编译为 JS 运行。

优点:

  • 使用 TS 新特性开发项目,项目代码的健壮性增强,代码错误更早暴露。

  • 编辑器支持情况良好,比如:VSCode,有很多智能提示,编码更准确,提升开发效率。

  • 使用 TS 的强类型特性来开发项目,可以使得项目代码重构更牢靠。

  • 使用 TS 的强类型特性来编写代码,可以减少很多不必要的类型判断。

  • TS 最终会被编译为 JS 运行,可以将 ES6+ 编译为ES5/ES3,兼容性好。

  • TS 是渐进式的,完全可以使用 JS 编写代码,可以将新特性慢慢应用到项目中。

缺点:

  • 引入了很多概念和新语法,有一定学习成本,对于一些小项目会增加开发成本

  • 开发过程中遇到问题,可能相关 TS 的网上资料相比 JS 会少一些,需要花一些精力查找资料去解决问题

7、如果让你接手react项目,是否能快速上手【描述】

最后

慧择网是国内知名互联网保险产品与服务平台,早九晚六双休,听说不加班,地点在南山区粤海路动漫园。这家面试难度不大,好像是急招要求快速到岗,最后HR面谈薪时,公司给不到期望的薪资,那就拜拜~继续加油
往期回顾:

天生我材必有用,千金散尽还复来

最近组建了一个湖南人的前端交流群,如果你是湖南人可以加我微信 ruochuan12 私信 湖南 拉你进群。


推荐阅读

1个月,200+人,一起读了4周源码
我读源码的经历

老姚浅谈:怎么学JavaScript?

我在阿里招前端,该怎么帮你(可进面试群)

e65de0773f50a53639c4e064658b7620.gif

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结
同时,最近组织了源码共读活动

81661d87883b0cf96bfb511261103699.png

识别方二维码加我微信、拉你进源码共读

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值