两年前端蚂蚁字节滴滴面试经历总结

文章讲述了前端开发者在面试中可能遇到的问题,包括浮点数精度处理、项目难点及解决方案、ES6继承、防抖函数、Webpack和Babel原理、虚拟DOM、Redux状态管理、React-Redux集成、多端开发、网络协议、错误处理、性能优化、中间件与容灾、数据库优化等知识点。
摘要由CSDN通过智能技术生成
  1. 返回该对象。

function myNew(Con, …args) {

let obj = Object.create(Con.prototype)

let result = Con.apply(obj, args)

return typeof obj === ‘object’ ? result : obj

}

笔试题:写一个处理加法可能产生精度的函数,比如 0.1 + 0.2 = 0.3

思路:对于浮点数在底层处理是有问题的,所以目的就是想办法将所以的浮点数转化为整数进行处理,同时乘以一个倍数(A),然后加起来后再除以这个倍数(A),这个倍数应该是两个数中最小的那个数的倍数,比如 0.1 + 0.02 ,那么应该同时乘以 100,变为 10 + 2,然后再将值除以 100。

1000000000 + 1000000000 允许返回字符串 处理大数

大数问题就是通过字符串来处理,从后往前加,然后处理进位的问题。

二面

聊项目

项目基本是问:

  1. 项目难点以及怎么解决的

  2. 项目有哪些亮点?

写一个 es6 的继承过程

这个题我觉得出得很好,很考察基本功。

// 这个是要实现的方法

createClass = fun(sons, super) {

// TODO

return fn;

}

// 这是个 es6 的一个例子,要实现 extends 的功能。

class Man extends Human {

cons (args) {

super(args)

// xxxxx

}

speak() {

console.log(‘’)

}

}

写一个大数相乘的解决方案。传两个字符串进来,返回一个字符串

function multi(str1, str2) {

}

这道题跟一面的时候思路差不多,只是进位的时候不一定是 1。

三面

聊项目

写一个防抖函数

算法题:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/

小节

字节果然是出了名的考算法题比较多的,基本每面都会算法题和编程题,对编程能力比较看重吧。

讲道理一面还是比较常规的,二三面因为都是团队 leader 和更高级别的,问的技术细节也比较少了,重点考察一些技术方案和项目的问题。

滴滴

一面

webpack 原理

大致就是:

  1. 初始化参数:从配置文件和 Shell 语句中读取与合并参数,得出最终的参数;

  2. 开始编译:用上一步得到的参数初始化 Compiler 对象,加载所有配置的插件,执行对象的 run 方法开始执行编译;

  3. 确定入口:根据配置中的 entry 找出所有的入口文件;

  4. 编译模块:从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理;

  5. 完成模块编译:在经过第 4 步使用 Loader 翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系;

  6. 输出资源:根据入口和模块之间的依赖关系,组装成一个个包含多个模块的 Chunk,再把每个 Chunk 转换成一个单独的文件加入到输出列表,这步是可以修改输出内容的最后机会;

  7. 输出完成:在确定好输出内容后,根据配置确定输出的路径和文件名,把文件内容写入到文件系统。

在以上过程中,Webpack 会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用 Webpack 提供的 API 改变 Webpack 的运行结果。

babel 原理

babel 的转译过程分为三个阶段:parsing、transforming、generating,以 ES6 代码转译为 ES5 代码为例,babel 转译的具体过程如下:

  1. ES6 代码输入

  2. babylon 进行解析得到 AST

  3. plugin 用 babel-traverse 对 AST 树进行遍历转译,得到新的 AST 树

  4. 用 babel-generator 通过 AST 树生成 ES5 代码

虚拟 DOM 的理解

从 React 历史的长河里聊虚拟 DOM 及其价值

项目里如何做的性能优化

这个跟我的项目相关。

写过 webpack loader 或者插件吗

讲讲你写的 babel 插件

二面

redux 的原理

redux 做状态管理和发布订阅模式有什么区别

redux 其实也是一个发布订阅,但是 redux 可以做到数据的可预测和可回溯。

react-redux 的原理,是怎么跟 react 关联起来的

react-redux 的核心组件只有两个,Provider 和 connect,Provider 存放 Redux 里 store 的数据到 context 里,通过 connect 从 context 拿数据,通过 props 传递给 connect 所包裹的组件。

了解多端的原理吗?

不清楚,没了解过。

http 与 tcp 的关系

tcp 可以建立多个连接吗?

我估计是想问 http 的管线化,当时忘了这个叫啥了

介绍一下为什么要有 三次握手,四次挥手

写过 babel 插件吗?用来干啥的?怎么写的 babel 插件

写过一些简单的 babel 插件,说了我们公司用来通过代码生成文档的 babel 插件是怎么做的。

知道怎么转化成 AST 的吗?

我估计就是问词法分析和语法分析相关的

研究过 React 的运行时吗?

职业规划。

三面

项目介绍

说一下你的项目有哪些复杂的点,以及怎么解决的

这个聊了挺久的,还聊了一些数据量比较大的怎么处理。

你们的业务组件库有多少个,是什么样的组件

权限组件是怎么设计的

会 node 吗?

我说我只会增删改查,会点 express,然后就开始一顿狂轰乱炸的知识。

介绍一下你对中间件的理解

怎么保证后端服务稳定性,怎么做容灾

感觉已经超纲了,基本没做过,还好之前跟后端同学聊过他们怎么做容灾的,还记得两点说了下。

  1. 多个服务器部署

  2. 降级处理,服务挂了,从缓存里面取。

怎么让数据库查询更快

  1. 索引

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

1710710842412)]

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值