网上收集的面试题
阿里笔试题:链式调用、对象比较以及对象是否存在循环引用
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
}, 1000);
}
55555
为什么?
setTimeout 是异步,延迟 1 秒后执行,for 循环打印了 5 个 console.log(i),但是 i 是全局变量,
for (var i = 0; i < 5; i++) {
(function (j) {
setTimeout(function () {
console.log(j);
}, 1000);
})(i);
}
formData 和 ajax 有什么区别 介绍下表单提交,和 formData 有什么关系
页面上有 1 万个 button 如何绑定事件
如何判断是 button
页面上生成 1 万个 button,并绑定事件,如何做(使用原生操作 DOM)
浮点数 0.1+0.2 为什么不等于 0.3
js 执行过程分哪些阶段
介绍 defineProperty 方法,什么时候需要用到
for...in 和 object.keys 的区别
知道 axios 或同级别网络请求库,知道 axios 的核心功能。 能口喷 xhr 用法,知道网络请求相关技术和技术底层,包括但不限于:content-type,不同 type 的作用;restful 设计理念;cors 处理方案,以及浏览器和服务端执行流程;口喷文件上传实现; 知道如何完成登陆模块,包括但不限于:登陆表单如何实现;cookie 登录态维护方案;token base 登录态方案;session 概念
能说明白接口请求的前后端整体架构和流程,包括:业务代码,浏览器原理,http 协议,服务端接入层,rpc 服务调用,负载均衡。 知道 websocket 用法,包括但不限于:鉴权,房间分配,心跳机制,重连方案等。 知道 pc 端与移动端登录态维护方案,知道 token base 登录态实现细节,知道服务端 session 控制实现,关键字:refresh token。 知道 oauth2.0 轻量与完整实现原理。 知道移动端 api 请求与 socket 如何通过 native 发送,知道如何与 native 进行数据交互,知道 ios 与安卓 jsbridge 实现原理。
知道移动端 webview 和基础能力,包括但不限于:iOS 端 uiwebview 与 wkwebview 差异;webview 资源加载优化方案;webview 池管理方案;native 路由等。 登陆抽象层,能够给出完整的前后端对用户体系的整体技术架构设计,满足多业务形态用户体系统一。考虑跨域名、多组织架构、跨端、用户态开放等场景。 mock 方案,能够设计出满足各种场景需要的 mock 数据方案,同时能说出对前后端分离的理解。考虑 mock 方案的通用性、场景覆盖度,以及代码或工程侵入程度。 埋点方案,能够说明白前端埋点方案技术底层实现,以及技术选型原理。能够设计出基于埋点的数据采集和分析方案,关键字包括:分桶策略,采样率,时序性,数据仓库,数据清洗等
访问上一页 url 地址
传统做法:document.referrer
但是在单页面中不支持 有两种做法一:不是每个页面都需要记录上一页的 url,所以对特定页面处理,在上一页通过参数形式带到下一页,在下一页进行判断缺点:带参数,麻烦,好几个页面要针对参数进行判断,容易遗漏 二,react-router 团队中 react-router-native 库中针对安卓手机的处理https://github.com/ReactTraining/react-router/blob/a7e8888533aa6c9510703d73dec63ad5d0979f43/packages/react-router-native/AndroidBackButton.js#L22 我的情况是:在支付确认页跳转到输入密码安全页面,安全页面返回,弹出弹出框(history.block)回调到支付确认页,支付确认页再返回(通过浏览器路由返回),会跳转到支付密码页面,导致报错 结合以上两种做法:采用第二种,再点击”确认返回“按钮时,history.goBack() 返回至上页面,并关闭弹框安全页面 history 出栈
ios srcoll height
首先,iframe 嵌套的元素被子元素的宽度撑开,
在 react componentDidMount 中 找到 iframe 把宽设置为 client 宽度
componentDidMount() {
document.getElementsByTagName('iframe')[0].style.width = document.body.clientWidth + 'px'
}
下滑情况下,页面自动刷新到顶部
是因为 iframe 的高度问题,下滑超过 iframe 的 2 倍高度,页面就会受不了自动刷新
怎么办
height:10000px
测试真的可以
<div className="scroll-wrapper">
<iframe
className="iframe"
frameBorder="0"
scolling={isIos() ? 'no' : 'yes'}
src="https://item.m.jd.com/product/206735.html">
</iframe>
</div>
.scroll-wrapper {
overflow-y: auto;
-webkit-overflow-scrolling: touch;
height: 100%;
width: 100%;
.iframe {
height: calc(100% - 88px);
padding-bottom: 88px; // 针对ios
}
}
参考资料
- 12 道腾讯前端面试真题及答案整理
- 100 个 JavaScript 代码片段总结
- 破解前端面试(80% 应聘者不及格系列):从 闭包说起
- 阿里笔试题:链式调用、对象比较以及对象是否存在循环引用
- 如何面试前端工程师:GitHub 很重要
- JavaScript 面试知识点
- 面试合集
- 如何做一个通用的 polyfill 包
- 写给初中级前端的高级进阶指南
- 用 setTimeout 实现 setInterval,阐述实现的效果与 setInterval 的差异
- JS 获取上一访问页面 URL 地址 document.referrer 实践
- react-router 团队中 react-router-native 库中针对安卓手机的处理
- 从面试官角度看一次前端面试经历