一.选择题
一个栈的输入顺序是1 2 3,下列序列中不可能是栈的输出序列的是( D )
A. 123
B. 321
C. 231
D. 3121
栈是先进后出,队列是先进先出。
下列的逻辑结构不同于数组( D )
A. 线性表
B.栈
C.队列
D.树1
2
3逻辑结构分为线性结构与非线性结构
数组是线性结构
而树是非线性结构Javascript的内存管理方式是 ( B )
A. 解释器根据跟踪程序运行自动分配内存,后续手动释放内存;
B. 解释器自动检测对象在某个时间不在使用时,自动释放内存;
C. 存在时间越久的对象扫描对象越少,越近扫描次数越多,发现不在使用时则自动释放;
D. 自主分配,开发者人工分配内存数量,后续手动释放内存1
2
3JavaScript 在定义变量时就完成了内存分配。
大多数内存管理的问题都在这个阶段。在这里最艰难的任务是找到“所分配的内存确实已经不再需要了”。它往往要求开发人员来确定在程序中哪一块内存不再需要并且释放它。
高级语言解释器嵌入了“垃圾回收器”,它的主要工作是跟踪内存的分配和使用,以便当分配的内存不再使用时,自动释放它。这只能是一个近似的过程,因为要知道是否仍然需要某块内存是无法判定的(无法通过某种算法解决)。以下代码块的输出结果是( A )
1
2
3
4
5
6
7
8
9
10
11
12
13
14function Person() {
Person.prototype.talk = function () {
return 'Hi, Gary';
};
}
function Men() {
this.talk = function () {
return 'Hi, Vivian!';
};
}
Men.prototype = new Person();
var men = new Men();
console.log(men.talk())A. ‘Hi,Vivian’
B. undefined
C.null
D.’Hi, Gary’1
原型与 this
以下代码块的输出结果是( D )
1
2
3
4var fn = function g(){
return 23;
}
typeof g()A. ‘number’
B. ‘undefined’
C. ‘function’
D. Error1
如果 g 没有赋值给 fn 没有输出?
以下代码块的输出结果是( B )
1
2
3
4
5
6
7
8
9console.log('1');
setTimeout(function() {
console.log('2');
})
console.log('3');
setTimeout(function() {
console.log('4');
}, 0);
console.log('5');A. 13542
B.13524
C.12354
D.134521
如果省略该参数,delay取默认值0。不管是哪种情况,实际的延迟时间可能会比期待的(delay毫秒数) 值长
以下代码块的输出结果是( D )
1
2
3
4
5
6
7
8var name = 'Vivian';
var foo = {
name: 'Gray';
bar: function () {
return this.name;
}
}
foo.bar.call(null)A. undefined
B.’Gary’
C. null
D.’Vivian’1
call的第一个参数是作为‘this’使用的对象,this置空时, this 的值默认指向全局对象。
以下代码块运行后a,b的值分别是( A )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var a = 1; b = 2;
function *foo() {
a++;
yield;
b = b * a;
a = (yield b) + 3;
}
function *bar() {
b--;
yield;
a = (yield 8) + b;
b = a * (yield 2)
}
function step(gen) {
var it = gen(), last;
return function () {
last = it.next(last).value
}
}
var s1 = step(foo), s2 = step(bar);
s1();s2();s1();s2();s1();s2();s1();s1();A. 10 2
B. 14 4
C. 12 18
D.10 31
看不懂
下列关于CSS中单位的描述错误的是( A )
A. px表示的是实际物理长度
B. rem表示相对于html根元素的字体尺寸
C. %表示相对于父元素的尺寸
D. em表示相对于当前元素内的字体尺寸,若当前元素为定义字体尺寸,则相对于父级元素的字体尺寸下列对跨域描述错误的是()
A. 使用JSONP解决跨域需求时要与服务端工程师约定好函数和入参;
B. window.postMessage和window.localStorage皆可以实现跨浏览器标签通信;
C. 使用BroadcastChannel通信时需要注意提供降级方案;
D. 使用Electron开发应用时修改某些设置可以做到发起HTTP请求不存在跨域问题。1
2
3
4
5BroadcastChannel:
IE系列(包括Edge):不支持
Firefox:38+
Chrome:54+
Safari:不支持帮助性提示最好的方式是( )
A. 帮助文档
B. 无需提示
C. 一次性提示
D. 常驻提示1
看不懂
哪些对话可能不会改善产品的用户体验( A C E )
A. “这个流程很简单,不用再出设计图了,我能搞定”
B. “选择题非常少时,把选项平铺出来会比下拉选择好”
C. “这种页面多酷啊,xx页面也改成这种风格吧”
D. “使用临时弹框(气泡提示)作为操作成功的提示,临时弹框消失后跳转至下一步”
E. “我根你说说这个业务在研发上的流程,你可以参考我的思路来做这个界面”二. 简答题
假设从服务器获取的是一个结构化的数据为data,格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29[{
id: 1,
content: "Hello word",
parent: null,
},
{
id: 2,
content: 'Hello gary',
parent: 1,
},{
id: 3,
content: 'Hello vivian',
parent: 1,
}]
//转换为
[{
id: 1,
content: 'Hello word'
children: [{
id: 2,
content: 'Hello gary',
children: [],
},
{
id: 3,
content: 'Hello Vivian',
children: [],
}]
}]假设data长度不定,编写一个函数将data转换成上述结构并给出测试用例;
1
2
3
4
5
6
7
8
9
10
11
12
13function recursiveFun (arr, pid) {
var result = []
for (var i = 0; i < arr.length; i++) {
if (arr[i].parent == pid) {
delete arr[i].parent
result.push(arr[i])
}
}
for (var j = 0; j < result.length; j++) {
result[j].children = recursiveFun(arr, result[j].id)
}
return result
}