2018网易校招前端开发工程师笔试卷讨论

又是一年校招季,实习面试对于2019届的我们已经越来越近了,做了两次笔试试水,感觉还是没有十足的把握完成笔试卷,任重道远啊。
来看看这次的笔试题吧。

###单选,20题(40分)

  • CSS
  • HTML5(新特性的考察)
  • JS(this,setTimeout,typeof,window对象)
  • 数据结构(链表,栈,二叉树)
  • 操作系统
  • 正则表达式
  • 计算机网络
  • 设计模式
  • 算法(排序算法(二分查找算法),空间复杂度)

###编程:3题(60分)

一、单选题

Types: CSS

Question: 下面哪一个不是伪元素选择器?

Choices: before : first-line : behind : first-letter

Thinking:

选择器 示例 事例说明
:link a:link 选择所有未访问过得链接
:visited a:visited 选择所有访问过得链接
:active a:active 选择所有正在活动的链接链接
:hover a:hover 鼠标在链接上
:focus input:focus 选择元素后具有焦点
:first-letter p:first-letter 选择每个

元素的第一个字母

:first-line p:first-line 选择每个

元素的第一个行

:first-letter p:first-child 选择器匹配属于任意元素的第一个子元素的

元素

:before p:before 在每个

元素之前插入内容

:after p:after 在每个

后插入内容

:lang(language) p:lang(it)

元素的lang属性选择一个开始值


Types: 操作系统

Question: 某计算机系统中有12台打印机,由K个进程竞争使用,每个进程最多需要4台打印机。该系统可能会发生死锁的K的最小值是 () 。

Thinking: 最坏情况每个进程卡3台,4个进程全部卡死


Types: 正则表达式

Question: 下面可以匹配 《img src=”http://img.163.com"></img》的正则表达式是

Thinking: 《img src=”[^”]*”></img》


特别字符 描述
$$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
* 匹配前面的子表达式零次或多次。要匹配 字符,请使用 \
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 [。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配换行符。序列 ‘\‘ 匹配 “\”,而 ‘(‘ 则匹配 “(“。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 {。
指明两项之间的一个选择。要匹配 ,请使用 \

####Type: 计算机网络

####Question: 下面不属于TCP协议拥塞控制部分的是

####Thinking:

http://blog.csdn.net/jtracydy/article/details/52366461


####Type: HTML5

####Question: 下面不属于HTML imput元素种类的是

####Thinking:
这里写图片描述


####Type: 设计模式

####Question: 下面意图那个是用来描述ADAPTER(适配器)?

####Thinking:
将一个类的接口转换成客户希望的另外一个接口。本模式使得原本由于接口不兼容 而不能一起工作的那些类可以一起工作。


####Type: 排序算法

####Question: 将一个整数序列整理为升序,两趟处理后序列变为10,12,21,9,7,3,4,25,则采用的排序算法可能是?

####Thinking:
将一个类的接口转换成客户希望的另外一个接口。本模式使得原本由于接口不兼容 而不能一起工作的那些类可以一起工作。


####Type:多线程

####Question:下面关于进程和线程的关系不正确的是:

####Choices:
i.线程可以通过相互之间协同来完成进程所要完成的任务
ii.线程是进程的一个实体,可作为系统独立调度和分派的基本单位
iii.线程之间不共享进程中的共享变量和部分环境
iv.一个进程中多给安城可以并发执行

####Thinking:
请大神赐教..


####Type: this

####Thinking:

https://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/


####Type: Window对象

####Question: JS中window对象的子对象不包含以下那个对象?

####Thinking:


属性 描述
closed 返回窗口是否已被关闭。
defaultStatus 设置或返回窗口状态栏中的默认文本。
document 对 Document 对象的只读引用。请参阅 Document 对象。
history 对 History 对象的只读引用。请参数 History 对象。
innerheight 返回窗口的文档显示区的高度。
innerwidth 返回窗口的文档显示区的宽度。
length 设置或返回窗口中的框架数量。
location 用于窗口或框架的 Location 对象。请参阅 Location 对象。
name 设置或返回窗口的名称。
Navigator 对 Navigator 对象的只读引用。请参数 Navigator 对象。
opener 返回对创建此窗口的窗口的引用。
outerheight 返回窗口的外部高度。
outerwidth 返回窗口的外部宽度。
pageXOffset 设置或返回当前页面相对于窗口显示区左上角的 X 位置。
pageYOffset 设置或返回当前页面相对于窗口显示区左上角的 Y 位置。
parent 返回父窗口。
Screen 对 Screen 对象的只读引用。请参数 Screen 对象。
self 返回对当前窗口的引用。等价于 Window 属性。
status 设置窗口状态栏的文本。
top 返回最顶层的先辈窗口。
window window 属性等价于 self 属性,它包含了对窗口自身的引用。
screenLeft screenTop screenX screenY 只读整数。声明了窗口的左上角在屏幕上的的 x 坐标和 y 坐标。IE、Safari 和 Opera 支持 screenLeft 和 screenTop,而 Firefox 和 Safari 支持 screenX 和 screenY。

####Type: 二分查找算法

####Question: 下面那个数据结构不能使用二分查找算法?

####Choices:
i.sorted linear array
ii.sorted linked list
iii.sorted pointer array
iV.sorted binary trees

####Thinking:
二分查找算法需要在有序地线性表中使用


####Type: setTimeout()

####Question: 代码执行结果为?

setTimeout(function() {
console.log(1);
},100);
setTimeout(function(){
console.log(2);
},0);
console.log(3);

Thinking:

3
2
1

二、算法题

####Question:
彩色砖块
  小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)

例如: s = “ABAB”,那么小易有六种排列的结果:
“AABB”,”ABAB”,”ABBA”,”BAAB”,”BABA”,”BBAA”
其中只有”AABB”和”BBAA”满足最多只有一对不同颜色的相邻砖块。

输入描述:输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。

输出描述:输出一个整数,表示小易可以有多少种方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//题目出的很误导人,其实意思就是判断给出的字符串中有多少种不同种类的字符,超过两种就是0,两种就是2,一种就是1
while(line = readline()){
//存取题目给出数组
// var arr = "AAA";
var arr = line.trim().split('');
//存取数组中的不同元素
var check = [];
for(var i = 0;i < arr.length;i++) {
if(check.indexOf(arr[i]) == -1) {
check.push(arr[i]);
}
}
var length = check.length;
if(length == 2){
console.log(2);
}else if (length == 1) {
console.log(1);
}else {
console.log(0);
}
}

####Question:
01串的最长子串求取
  如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,”10101”,”0101010”都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。

输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含’0’和’1’

输出描述:输出一个整数,表示最长的满足要求的子串长度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//直接遍历整个字符串,记录每次的长度,并取最大值
while(line = readline()){
var str = line.trim();
var len = str.length;
if(len<=1){
console.log(len);
}else{
var k=1;
var max=1;
for(var i=0; i<str.length-1; i++){
if(str[i] !== str[i+1]){
k++;
}else{
k=1;
}
if(k > max){
max = k;
}
}
console.log(max);
}
}

####Question:
独立的小易
  小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

输入描述:输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割

输出描述:输出一个整数, 表示小易最多能独立生活多少天。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//注意分两种情况,水果够吃和不够吃,不能使用循环,任务量过大会超时
while(line = readline()){
var lines = line.trim().split(' ');
var arr = lines.map(function(item){
return parseInt(item);
});
var x = arr[0],
f = arr[1],
d = arr[2],
p = arr[3];
if(Math.floor(d/x)<=f){
console.log(Math.floor(d/x));
}else{
console.log(Math.floor((d-f*x)/(x+p))+f);
}
}

总结

总的来说,本次笔试题的难度相对之前的前端实习招聘笔试来说更为简单,最后的三个大题都是网易17届的题目,估计是云音乐事业部扩招了,那么希望就更大了嘿嘿。
希望明年3月的实习面试的时候,能够游刃有余,加油。