一、选择题
1、执行下列语句后,变量name1和name2的值分别为(A)
var name = 'tom';
var person = {
name:'jerry',
getName:function(){
return this.name;
}
};
var getName = person.getName;
var name1 = person.getName();
var name2 = getName();
A. jerry tom
B. tom tom
C. jerry jerry
D. tom jerry
2、以下代码运行结果输出obj、obj2的结果是(A)
const obj = {a:1,b:2};
obj.a = 2;
var obj2 = Object.freeze({
a:1,
b:2,
});
obj2.a = 2;
console.log(obj,obj2);
A. {a : 2 , b : 2},{a : 1 , b : 2}
B. {a : 1 , b : 2},{a : 1 , b : 2}
C. {a : 2 , b : 2},{a : 2 , b : 2}
D. {a : 1 , b : 2},{a : 2 , b : 2}
解析:对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。如果真的想将对象冻结,应该使用Object.freeze方法。
3、在table标签中,用来表示表格边框粗细的是(D)
A. border-style;
B. cellpadding;
C. cellspacing;
D. border;
解析:border-style 属性用于设置元素所有边框的样式。border-style:dotted solid double dashed;
cellpadding 属性规定单元边沿与其内容之间的空白。cellpadding 是边框与其内容的间隙大小;
cellspacing 属性规定单元格之间的空间。cellspacing 是边框与边框之间的间隙大小;
border 简写属性在一个声明设置所有的边框属性。border:5px solid red;
可以按顺序设置如下属性:border-width、border-style、border-color
4、若要找出一个序列中的大小对,比如{2,1},{4,2},可以借助于下列哪种排序算法(D)
A. 堆排序
B. 快速排序
C. 选择排序
D. 归并排序
解析:选择排序基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。
快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序
归并排序采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)
该题目的思想是:一个一个地找,用n-1次比较来找出最大元,再用n-2次比较找出最小元,比较次数(基本运算)为2n-3次。用分治法。
5、请挑选出最精简的css代码:(A)
A. margin:0;
B. padding: 10px 0px;
C. color: #ffffff;
D. border: 1px solid #ff0000;
解析:常用简写属性包括 animation、background、border、font、margin、padding、transition
6、以下方法不能减少页面加载时间的是(D)
A. 合并js,css文件,减少http请求
B. 将重要的HTML元素放置于页面顶部
C. 使用sprnt图片,减少图片大小
D. 标明元素宽高,防止页面重绘
7、在一个双链表中,已知n所指向结点是m所指向结点的后驱结点,若在m和n之间插入一个新的结点s,则下列执行语句正确的是(A)
A. s->next = n; n->prior = s; s->prior = m; m->next = s;
B. s->next = n->next; n->prior = s; s->prior = m; m->next =s;
C. m->next = s->next; s->prior = m; s->next =n; n->prior = s;
D. m->next = s; s->prior = m; s->next = n; n->prior = s;
8、以下代码执行结果是(D)
var regex = /a/g;
console.log(regex.test("a"),regex.test("aba"),regex.test("ababc"));
A. true , false , false
B. true , true , true
C. false , false , false
D. true , true , false
解析:第三次调用
test
,因为这一次尝试匹配,开始从下标lastIndex
即3
位置处开始查找,没有了a,自然就找不到了。如果没有g
,自然都是从字符串第0
个字符处开始尝试匹配,此时都为true
9、下面有关查找的说法错误的是(C)
A. 在二叉树中查找一个节点,借助于二分查找
B. 无序表中查找数据用顺序查找的方法
C. 在链表中查找一个元素用顺序查找的方法
D. 在有序表中查找数据用二分查找
10、以下代码执行结果是(B)
var a = 1; let b = 2;
console.log(window.a,window.b);
A. 1 , 2
B. 1 , undefined
C. undefined , undefined
D. undefined , 2
11、以下代码执行时console.log的结果是(B)
var a = 1;
(function a(){
a = 2;
console.log(a);
delete a;
console.log(a);
})();
A. 函数 a,2
B. 函数 a,函数 a
C. 2,函数 a
D. 2,1
12、下面关于TCP/IP协议断开连接的说法错误的是(D)
A. 客户端和服务端都可以发起中断连接请求
B. TCP/IP连接4次挥手才能断开连接
C. 当服务端发起断开连接请求,客户端先发送ACK报文到服务器,之后才会发送FIN报文到服务端
D. 当客户端发送FIN报文到服务端,服务端一起发送FIN和ACK报文到客户端,表示同意断开连接
解析:服务器收到断开请求后并不是立即断开连接,而是先向客户端发送“确认包”,告诉它我知道了,我需要准备一下才能断开连接,再发送FIN包,告诉它我准备好了,断开连接吧。D错
中断连接端可以是Client端,也可以是Server端。A对
当服务器进程被终止时,会关闭其打开的所有文件描述符,此时就会向客户端发送一个FIN 的报文,客户端则响应一个ACK 报文,但是这样只完成了“四次挥手”的前两次挥手,也就是说这样只实现了半关闭,客户端仍然可以向服务器写入数据。 但是当客户端向服务器写入数据时,由于服务器端的套接字进程已经终止,此时连接的状态已经异常了,所以服务端进程不会向客户端发送ACK 报文,而是发送了一个RST 报文请求将处于异常状态的连接复位; 如果客户端此时还要向服务端发送数据,将诱发服务端TCP向服务端发送SIGPIPE信号,因为向接收到RST的套接口写数据都会收到此信号.
13、在ISO网络模型中,分为七层,每一层都有着独特的功能,并且在相关层存在一些物理设备,以下对应关系错误的是(A)
A. 数据链路层:网关
B. 物理层:转发器
C. 数据链路层:网桥
D. 网络层: 路由器
名称 | 传输协议 | 传输单元 | 主要功能设备/接口 |
---|---|---|---|
物理层 | IEEE 802.1A、IEEE 802.2 | bit-flow 比特流 | 光纤、双绞线、中继器和集线器 & RJ-45(网线接口) |
数据链路层 | ARP、MAC、 FDDI、Ethernet、Arpanet、PPP、PDN | frame 帧 | 网桥、二层交换机 |
网络层 | IP、ICMP、ARP、RARP | 数据包(packet) | 路由器、三层交换机、网关 |
传输层 | TCP、UDP | Segment/Datagram | 四层交换机 |
会话层 | SMTP、DNS | 报文 | QoS |
表示层 | Telnet、SNMP | 报文 | – |
应用层 | FTP、TFTP、Telnet、HTTP、DNS | 报文 | – |
14、请从以下选项中选出不是css3中新增的伪类(B)
A. nth-child(2);
B. before;
C. first-of-type;
D. checked
解析:CSS3 中的:checked 选择器匹配每个已被选中的 input 元素(只用于单选按钮和复选框)。
CSS3 中的:first-of-type 选择器匹配属于其父元素的特定类型的首个子元素的每个元素。
CSS3 中的:nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型
:before 选择器在被选元素的内容前面插入内容。不是CSS3新增的
15、一个二叉树的中序遍历序列为{D,B,E,F,A,C},后序遍历序列为{D,F,E,B,C,A},则其先序遍历序列为(D)
A. {A,B,E,D,F,C}
B. {A,D,F,E,B,C}
C. {A,B,D,E,C,F}
D. {A,B,D,E,F,C}
解析:
1538731467593.png
16、以下说法错误的是(D)
A. display:inline-block;像行内元素一样显示,但内容同时有块类型的部分特性
B. display:block;是像块级元素一样显示
C. display:list-item; 与块级元素特性一样,同时具有列表标记
D. display:none; 不显示元素,但是占据物理空间;
解析:display:none;会让元素完全从渲染树中消失,渲染的时候不占据任何空间; visibility: hidden;不会让元素从渲染树消失,渲染时元素继续占据空间,只是内容不可见
17、一个入栈序列为{A,B,C,D,E},下面哪个序列可能是出栈序列(B)
A. {A,D,B,E,C}
B. {A,B,C,D,E}
C. {A,D,B,C,E}
D. {A,B,E,C,D}
18、如果已知数字有{1,2,5,10},每个数字可以无限次使用,构造出数字100,编程解决用到的编程思想有(C)
A. 排列组合
B. 递归
C. 回溯法
D. 动态规划
19、以下代码执行结果是(D)
var obj = {
x:1,
xyz:function(){
with(this){
function con(){
console.log(x);
console.log(this.x);
}
var x = 2;
(function(){
con();
})();
con.call(this);
}
}
}
obj.xyz();
A. 2,undefined,undefined,1
B. undefined,undefined,undefined,2
C. 2,undefined,2,undefined
D. 2,undefined,2,2
解析:with语句的作用是将代码的作用域设置到一个特定的作用域中。题中对象中有函数,with中的this代表是obj对象,所以with扩展了obj作用域,那么xyz中的变量x就会由原来的xyz内部提升变为obj对象提升。所以obj中的变量a由1变成了2。
20、Vue.js源码中使用了什么类型检查工具(A)
A. flow
B. flowcheck
C. 其他
D. typescript
二、问答题
1、题目描述:网站搜索功能一般需要为用户提供搜索建议,比如百度搜索,用户在输入时,输入框下方会出来一个绝对定位的建议词列表;假设根据用户输入关键词获取建议列表的js函数为getSuggestWords,该函数返回一个Promise对象,resolve时返回的建议词列表格式如['a','b'],比如getSuggestWords('a').then(function(words){ /do something/ });现页面上有一个input元素(id为keyinput),请使用原生JS、HTML、css,为其添加输入建议功能,效果可参考:https://163.lu/k/XftXv2
答案:
2、题目描述:网站在开展一些限时活动时,一般会在页面上显示倒计时,此类场景下,服务端会给前端传倒计时“剩余毫秒数”,前端根据剩余毫秒数计算出具体时分秒等信息,实时更新到页面上;
-
请实现一个js函数remainTime,根据“剩余毫秒数”,返回剩余的天、时、分、秒、毫秒,24小时进位为一天,60分钟进位为一小时,以此类推;比如remain Time(2000)返回{day:0,hour:0,min:0,sec:0,ms:0}
-
请实现一个定时器函数counter,传入“剩余毫秒数”、回调函数,要求此计时器能每100毫秒调用一次回调函数,并将最新的剩余时间等信息(remain Time的计算结果)通过参数传递给回调函数;比如:counter(2000,function(time){});请注意setInterval的回调时间点不一定准确,每次触发时要重新计算当前剩余毫秒数。
答案:
三、编程题
1、题目描述:小易准备去拜访他的朋友,他的家在0点,但是他的朋友的家在x点(x>0),均在一条坐标轴上。小易每一次可以向前走1,2,3,4或者5步。问小易最少走多少次可以到达他的朋友的家
输入描述:
一行包含一个数字x(1 <= x <= 1000000),代表朋友家的位置
输出描述:
一个整数,最少的步数
输入:
4
输出
1
输入
10
输出
2
答案:
网友评论