2019小米(武汉)校招前端开发面试凉经

小米前端开发面试凉经


1.自我介绍
2.说一下盒模型(注意说清楚IE盒模型和W3C标准盒模型的区别)
3.行内标签和块级标签都有哪些,有什么不同
4.HTML5新增标签有哪些
5.怎么用CSS实现一个三角形
6.用javascript实现斐波那契数列(现场手撕代码)
7.说一下浏览器缓存
8.输入一个url按下回车后,先会检查是否有本地缓存,如果有则返回本地缓存,那么如果服务器端的信息更新了,通过什么方法来检测本地缓存是否还有效
9.说一下HTML5新增的缓存机制(主要说localStorage和sessionStorage的作用和区别)
10.说一下javascript的作用域(面试官提示让我想一下闭包)
11.为什么会有同源策略(安全性),怎么解决跨域请求问题
12.说一下javascript的原型和原型链
13.有哪些方法可以实现水平垂直居中
14.CSS的长度单位都有哪些,各有什么不同
15.png,gif,jpg的区别和应用场景
16.说一下深拷贝
17.用正则匹配手机号(第一位是1,第二位是7/8/3)
18.说一下git从创建文件到提交的过程
19.状态码304代表什么
20.用过哪些前端框架
21.有没有用javascript写demo
22.你的博客上几篇文章(我:七篇)
23.平时怎么学习前端的,都看过什么书
24.如果让你做小米前端方面的项目,你有什么想法
25.平时用的编辑器是什么(我:webstorm)
26.说一下webstorm的快捷键都有哪些,快速定位文件的快捷键是什么
27.有没有用java写过项目
28.还有什么想问的(问了一下小米公司用的框架是react,编辑器是webstorm)
### 武汉小米外包公司前端面试题中手写代码要求或示例 在前端开发领域,手写代码是衡量开发者基础能力的重要方式。以下是一些可能出现在武汉小米外包公司前端面试中的手写代码示例或要求,结合了常见的前端面试题和引用内容[^2]。 #### 1. **最长公共前缀** 长公共前缀问题是经典的算法题目,通常需要编写一个函数来找到多个字符串的最长公共前缀。 ```javascript function longestCommonPrefix(strs) { if (strs.length === 0) return ''; let prefix = strs[0]; for (let i = 1; i < strs.length; i++) { while (strs[i].indexOf(prefix) !== 0) { prefix = prefix.slice(0, -1); if (prefix === '') return ''; } } return prefix; } ``` 这段代码通过逐步缩短前缀的方式找到所有字符串的最长公共部分[^1]。 #### 2. **this 指向问题** 在 JavaScript 中,`this` 的指向是一个常考知识点。以下是一个类似的例子: ```javascript class Person { constructor(name) { this.name = 'Jerry'; } getName() { return { name: 'Tom', logName() { console.log(this.name); } }; } } const p = new Person(); p.getName().logName(); // 输出 'Tom' ``` 在此示例中,`this` 的值取决于 `logName` 方法被调用的上下文。由于 `logName` 是在一个对象字面量中定义的,因此它的 `this` 指向该对象,而不是 `Person` 实例。 #### 3. **交通信号灯交替亮灯** 使用回调函数实现红绿黄灯交替亮灯的功能,这是一道考察异步编程能力的题目。 ```javascript const task = (timer, light, callback) => { setTimeout(() => { if (light === 'red') { console.log('Red light'); } else if (light === 'green') { console.log('Green light'); } else if (light === 'yellow') { console.log('Yellow light'); } callback(); }, timer); }; task(3000, 'red', () => { task(2000, 'green', () => { task(1000, 'yellow', Function.prototype); }); }); ``` 上述代码展示了如何通过嵌套回调实现灯的顺序点亮[^3]。 #### 4. **手写 Webpack 插件** 手写 Webpack 插件是高级前端工程师的常见面试题之一。以下是一个简单的插件示例: ```javascript class MyPlugin { apply(compiler) { compiler.hooks.emit.tap('MyPlugin', (compilation) => { console.log('Webpack emit hook triggered'); }); } } module.exports = MyPlugin; ``` 该插件通过监听 Webpack 的生命周期钩子,在打包过程中执行自定义逻辑[^4]。 #### 5. **垂直居中布局** 垂直居中是前端开发中的基本技能,以下是使用 CSS Flexbox 实现的示例: ```html <div class="parent"> <div class="children"></div> </div> ``` ```css .parent { display: flex; justify-content: center; align-items: center; height: 100vh; } .children { width: 100px; height: 100px; background-color: red; } ``` 以上代码通过 Flexbox 实现了子元素在父容器中的水平和垂直居中[^1]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值