网上收集的面试题

阿里笔试题:链式调用、对象比较以及对象是否存在循环引用

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#L22open in new window 我的情况是:在支付确认页跳转到输入密码安全页面,安全页面返回,弹出弹出框(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
    }
}

参考资料

Last Updated:
Contributors: johan