概念基础类
AJAX中GET和POST的区别
- 语义上的区别
GET是获取资源,POST是处理资源
GET和POST最初被设计的初衷也是如此 - 现象上的区别
GET是通过URL请求,POST是通过header请求
HTTP协议对GET和POST都没有对长度的限制,而对于URL长度上的限制是浏览器跟服务器造成的
let、var、const的区别
如何解决异步回调地狱
DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动
DOM操作 —— 如何添加、移除、移动、复制、创建和查找节点等
事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别
XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误
JSON —— 作用、用途、设计结构
new操作符都做了些什么
使用new命令时,它后面的函数调用就不是正常的调用,而是依次执行下面的步骤。
1.创建一个空对象,作为将要返回的对象实例
2.将这个空对象的原型,指向构造函数的prototype属性
3.将这个空对象赋值给函数内部的this关键字
4开始执行构造函数内部的代码
什么是事件代理
事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是可以提高性能。
说说你对MVC和MVVM的理解
MVC
View 传送指令到 Controller
Controller 完成业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
所有通信都是单向的。
MVVM
Angular它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。
组成部分Model、View、ViewModel
View:UI界面
ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;
Model:数据访问层
引用类型有哪些?非引用类型有哪些
基本类型值(数值、布尔值、null和undefined):指的是保存在栈内存中的简单数据段; 引用类型值(对象、数组、函数、正则):指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象
如下代码输出什么?为什么
|
|
如下代码输出什么? 为什么
|
|
如下代码输出什么? 为什么
|
|
以下代码的输出结果是?为什么?
|
|
下面函数的返回值是什么?
|
|
返回undefined
对于 return 、break、continue 等语句,如果后面紧跟换行,解析器会自动在后面填充分号(;)
综合实战类
实现下面函数
|
|
|
|
写一个函数判断一个字符串是不是回文字符串
|
|
编写一个方法 求一个字符串的字节长度
假设:一个英文字符占用一个字节,一个中文字符占用两个字节
|
|
如何判断某变量是否为数组数据类型?
正则题
var string = “我的账户余额:2,235,467.20”;
console.log(?);
// 请用js计算出我到底有多少钱(输出Number类型数字,代码尽量简洁,考虑通用情况)
作用域
|
|
语法题 有一个合法的 JSON 对象(即不包含函数等值的对象),设计一个函数,取出该对象内所有 key 为 “id” 并且其值不为对象、数组的值,装入一个数组并返回。
|
|
extractIds(data); // should return [ 1, 2, 4, 5 ]
闭包 下面五段代码分别输出什么?并且什么时候输出什么?
|
|
创建一个二进制相加函数,根据传入的两个二进制数字符串返回一个相加的十进制的结果。
|
|
解析:
|
|
图片懒加载
实现页面加载进度条
事件委托
实现extend函数
为什么会有跨域的问题以及解决方式
jsonp原理、postMessage原理
实现拖拽功能,比如把5个兄弟节点中的最后一个节点拖拽到节点1和节点2之间
动画:setTimeout何时执行,requestAnimationFrame的优点
手写parseInt的实现:要求简单一些,把字符串型的数字转化为真正的数字即可,但不能使用JS原生的
字符串转数字的API,比如Number()
编写分页器组件的时候,为了减少服务端查询次数,点击“下一页”怎样能确保还有数据可以加载(请求数据不会为空)?
ES6新增了哪些特性,使用过哪些,也有当场看代码说输出结果的
JS模块化的实践
require.js的实现原理(如果使用过webpack,进一步会问,两者打包的异同及优缺点)
promise的实现原理,进一步会问async、await是否使用过
实现gulp的功能
使用前端框架(angular/vue/react)带来哪些好处,相对于使用jQuery
vue双向数据绑定的实现
单页应用,如何实现其路由功能
代码题
(个人觉得这道题真的挺难,全答对需要非常好的功底)
|
|
答案(详细答案可参考链接)
|
|
以下代码的输出结果是?
|
|
以下代码的输出结果是? 为什么
|
|
遍历数组,把数组里的打印数组每一项的平方
|
|
遍历 JSON, 打印里面的值
|
|
以下代码输出结果是? 为什么
|
|
求n!,用递归来实现
|
|
以下代码输出什么?
|
|
写一个函数,返回参数的平方和?
|
|
|
|
如下代码的输出?为什么
|
|
如下代码的输出?为什么
|
|
如下代码输出什么? 写出作用域链查找过程伪代码
|
|
如下代码输出什么? 写出作用域链查找过程伪代码
|
|
以下代码输出什么? 写出作用域链的查找过程伪代码
|
|
以下代码输出什么? 写出作用域链查找过程伪代码
|
|
过滤如下数组,只保留正数,直接在原数组上操作
|
|
过滤如下数组,只保留正数,原数组不变,生成新数组
|
|
使用数组拼接出如下字符串
|
|
|
|
写出两种以上声明多行字符串的方法
- 字符串拼接
|
|
- 转义
|
|
补全如下代码,让输出结果为字符串: hello\yoowin
|
|
以下代码输出什么?为什么
|
|
写一个函数,统计字符串里出现出现频率最多的字符
|
|
写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
|
|
写一个 ucFirst函数,返回第一个字母为大写的字符
|
|
写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上…,如
|
|