当前位置: 首页 > 面试经验 >

【前端校招面经】阿里天猫超市前端校招面经

优质
小牛编辑
125浏览
2023-03-28

【前端校招面经】阿里天猫超市前端校招面经


这是去年 12 月面试的, 这次把面经补上




  • 自我介绍

  • CSS垂直水平居中有哪些方式, 用代码实现

  • 背诵flex有哪些属性

  • setInterval的间隔时间是准确的吗? 如何做到间隔时间绝对准确

  • 0.1 + 0.2 为什么不等于 0.3, 怎样让它等于, 你知道有哪些 js 库可以实现 js 科学运算, 你看过 js 库实现科学运算的源码吗?

  • 浏览器缓存

  • 什么场合适合用强缓存, 什么场合适合用协商缓存

  • httpsTLS 协议四次握手

  • 现已知 https 对前端性能影响很大, 如何提升其性能以减少 tls 层耗时

  • https 如何防止信息被劫持

  • Vue 和 React 区别

  • MobxRedux原理, 二者在应用层面上的区别

  • 介绍你实习项目

  • 你在实习期间做的项目有哪些价值, 收到了哪些反馈

  • 代码题


// 1. 三数之和(LeetCode 15)

// 2. 单链表反转

// 3. 手写一个 EventEmitter class
// 下面是 ChatGPT 写的:
class EventEmitter {
constructor() {
this.events = {};
}

/**
* 注册事件
* @param {String} eventName 事件名
* @param {Function} cb 回调函数
*/
on(eventName, cb) {
// 如果没有注册过,则创建一个空数组
if (!this.events[eventName]) {
this.events[eventName] = [];
}
// 将回调函数添加到对应的事件数组中
this.events[eventName].push(cb);
}

/**
* 触发事件
* @param {String} eventName 事件名
* @param {...any} args 传入参数
*/
emit(eventName, ...args) {
// 获取对应的事件数组
const callbacks = this.events[eventName];
// 如果存在
if (callbacks && callbacks.length) {
// 依次执行数组中的函数
callbacks.forEach(cb => {
cb(args);
});
}
}
}
 类似资料: