JS笔试面试常见编程题

186 阅读3分钟

JS笔试面试编程题

一、 排序

1、快速排序

2、冒泡排序

3、插入排序

4、选择排序

5、希尔排序

6、归并排序

7、二分查找(折半查找)

二、数

(一)自然数中出现过多少次数字几问题

(二)回文数判断

(三)判断一组数字是否连续

(四)不借助临时变量,进行两个整数的交换

(五)实现九九乘法表

三、数组

(一)数组扁平化与数组去重(重点)

1、数组扁平化(多维数组=>一维数组)

2、去除数组中的重复元素

3、编写一个程序将数组扁平化去除其中重复部分数据,最终得到一个升序且不重复的数组

(二)深拷贝与浅拷贝(重点)

1、区别

2、实现深拷贝

2.1 递归实现拷贝

2.2 Object.create()

2.3 JSON.parse(JSON.stringify())

2.4 jQuery提供的$.extend

2.5 函数库lodash提供的cloneDeep()

3、实现浅拷贝

3.1 Object.assign()

3.2 Array.prototype.concat()

3.3 Array.prototype.slice()

(三)任意位置插入元素不改变数组

(四)实现随机选取10–100之间的10个数字,存入一个数组,并排序。

(五)数组中的两个数相加等于目标数,返回他们在数组中的位置。

四、字符串

(一)将字符串转换为驼峰格式

(二)字符串反转

(三)清除字符串的空格

(四)纯数字字符串添加千分符

(五)统计一个字符串中出现最多的字符,并统计出现次数

(六)获取URL中的参数

(七)模板占位符替换功能的实现

五、函数

(一)函数柯里化

(二)防抖与节流(重点)

(三)闭包(重点)

(四)用setTimeout实现setInterval

(五)封装一个使localStorage具有过期机制的函数

(六)this指向问题

1、普通函数调用,指向windows

2、对象的方法调用,指向对象

3、构造函数方法调用,指向构造函数实例出来的对象

4、call、apply、bind可以自定义this指向第一个参数

六、对象与继承

(一)创建子类Child,使用原型和构造函数的方式继承父类People的方法,并调用say函数说出姓名和年龄。

(二)原型和原型链(重点)

1、如何理解JS中的原型链

2、JS中执行对象查找时,永远不会去查找原型的函数?

(三)继承方法

1.原型链继承

2.构造函数继承

3.实例继承

4.组合继承

5.拷贝继承

6.寄生组合继承

(四)new操作符

七、栈与队列

(一)双栈实现队列

八、树

九、链表

十、apply call bind

十一、Promise(重点)

(一)有道云笔记FZth001总结的Promise面试题

(二)构造一个Promise实例

(三)promise async await

十二、AJAX(重点)

(一)特点、技术组成、核心原理、优点、缺点

1、特点

2、技术组成

3、核心原理

4、优点

5、缺点

(二)创建过程

(三)原生JS实现AJAX(请求原理解析)

1、创建异步对象XMLHttpRequest

2、设置请求参数

2.1 准备请求

2.2 发送请求

2.3 get

2.4 post

3、处理响应

3.1 获取异步对象的readyState属性,该属性存有服务器响应的状态信息。每当readyState改变 时,onreadystatechange函数就会被执行。

3.2 判断响应报文的状态,若为200则服务器正常运行并返回相应数据。

3.3 读取响应数据,可通过responseText属性来取回服务器返回的数据

(四)AJAX错误调试

十三、DOM

(一)判断一个元素是否隐藏

(二)遍历A节点的父节点下的所有子节点

(三)判断浏览器是否支持某个属性或方法

十四、其他

(一)时间选择器获取当前时间