JavaScript面试题111-120
每日坚持学10道题
111. js数组去重(9种)
[问答题]
用 JavaScript 脚本为 Array 对象添加一个去除重复项的方法。
来自:百度
参考:
// 利用ES6中的 Set 方法去重
let arr = [1, 3, 2, 2, 9, 8, 3, 1];
function unique(arr) {
return Array.from(new Set(arr))
}
console.log(unique(arr)); // [1,0,2,9,8,3]
112. js中的括号
[单选题]
以下哪一条 Javascript 语句会产生运行错误?
A.var obj=( );
B.var obj=[ ];
C.var obj={ };
D.var obj=/ /;
来自:网易
答案:A
A 是语法错误
B 是创建一个数组对象
C 是创建一个对象
D 是一个创建正则对象;若为 var obj=/ /; 即赋值被注释掉,及运行被结束;
113. JS库与API
[单选题]
从四个选项选出不同的一个。
A.JQuery
B.Node.js
C.Prototype
D.CommonJS
来自:搜狐研发工程师模拟笔试题
答案:D
- Jquery 是继 prototype 之后又一个优秀的 Javascrīpt 框架。它是轻量级的 js 库(压缩后只有 21k) ,它兼容 CSS3,还兼容各种浏览器。
- Node.js 是一套用来编写高性能网络服务器的 JavaScript 工具包。
- 在 JavaScript 中,prototype 对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象 prototype 对象,类是以函数的形式来定义的。
- prototype 表示该函数的原型,也表示一个类的成员的集合。prototype.js 是由 Sam Stephenson 写的一个 javascript 类库。
- CommonJS API 定义很多普通应用程序(主要指非浏览器的应用)使用的 API,从而填补了这个空白。
114. 浏览器缓存
[问答题]
浏览器的缓存和本地存储相关内容有哪些?
这些在什么环境下都各自能起到什么作用?
来自:百度
参考
- html 页面、图片等.
- 在联网时已访问的内容可以直接从缓存调出来,提高访问速度离线时,可以本地存储做离线访问(google gears)
- 以后我们每次访问网站时,IE 会首先搜索这个目录,如果其中已经有访问过的内容,那 IE 就不必从网上下载,而直接从缓存中调出来,从而提高了访 问网站的速度。
115. 优化网页性能(7种)
[问答题]
怎样优化网页性能
来自:百度
参考:
1.尽量减少 HTTP 请求次数
2. 减少 DNS 查找次数
3.资源合并与压缩
4.CSS Sprites
5.Inline Images
6.将外部脚本置底
7.缓存
116. ajax 原理
[问答题]
ajax 原理、如何实现刷新数据及优点?
参考:
来自:迅雷
参考:
- Ajax 的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给 Ajax 引擎自己来做,只有确定需要从服务器读取新数据时再由 Ajax 引擎代为向服务器提交请求。
- 优点:1、减轻服务器负担 2、无刷新更新页面 3、更好的用户体验
117. 去除字符串的前后空格
[问答题]
用 js 脚本写去除字符串的前后空格。
来自:百度
参考: 脚本方法:
String.prototype.trim = function (mode) { //前后去空格
if (mode == 'left') {
return ((this.charAt(0) == "" && this.length > 0) ? this.slice(1).trim('left') : this);
} else if (mode == 'right') {
return ((this.charAt(this.length - 1) == "" && this.length > 0) ?
this.slice(0, this.length - 1).trim('right') : this);
} else {
return this.trim('left').trim('right');
}
};
ES新增的trim()
方法: 参考地址.
// trim 方法取出字符串两边的空格
let str = " str.trim()去除两边的空格 ";
console.log(str) // str.trim()去除两边的空格
let str2 = str.trim();
console.log(str2) // str.trim()去除两边的空格
118. 语言特性
[单选题]
蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似()
A.PHP,Python
B.JSP,servlet
C.Java,Javascript
D.C,C++
来自:程序员文化水平闯关挑战卷
答案:C
蔺相如 和 司马相如,都有 相如; 魏无忌 和 长孙无忌 都有 无忌; 名字里面由重复地方,但没有什么关系。 但是 D 选项 C 和 C plus plus ,后者是对前者的进阶版,不是很贴切
119. 正则
[问答题]
判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为 5-20。
来自:前端工程师练习卷
参考:
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;
reg.test("a1a__a1a__a1a__a1a__");
120. 统计字符次数
[问答题]
判断一个字符串中出现次数最多的字符,统计这个次数。
来自:前端工程师练习卷
参考:
//将字符串的字符保存在一个 hash table 中,key 是字符,value 是这个字符出现的次数
var str = "abcdefgaddda";
var obj = {};
for (var i = 0, l = str.length; i < l; i++) {
var key = str[i];
if (!obj[key]) {
obj[key] = 1;
} else {
obj[key]++;
}
}
/*遍历这个 hash table,获取 value 最大的 key 和 value*/
var max = -1;
var max_key = "";
var key;
for (key in obj) {
if (max < obj[key]) {
max = obj[key];
max_key = key;
}
}
console.log("出现最多的为:" + max_key + " 次数:" + max);
代码地址: 请参考
~~ 今天的面试题完成 ~~