今日头条2017秋招前端笔试试卷解析(2)

上一篇将试卷的上半部分做以解析,现在就将剩下的选择题和编程题做以解析

9.下面哪些属于JavaScript的typeof运算符的可能结果:()
A.symbol B.NaN C.boolean D.null E.array F.undefined G.string
解析:这道题我在牛客网刷题时见了三回,所以答案就很快选出来了,选A,C,F,G
下面是所有typeof的值:
alert(typeof (Symbol())); //"symbol"
alert(typeof (123)); //"number"
alert(typeof (‘123’)); //"string"
alert(typeof (function())); //"function"
alert(typeof (Object())); //"object"
alert(typeof (false)); //"boolean"
alert(typeof (null)); //"object"
alert(typeof (undefined)); //"undefined"

10.老王有两个孩子,已知至少有一个孩子是在星期二出生的男孩。问:两个孩子都是男孩的概率是多大?
A.13/27 B/7/9 C.1/2 D.1/3
解析:这道题是一个概率题也是排列组合题,我当时是硬算的,就是说首先判断满足“已知至少有一个孩子是在星期二出生的男孩”的条件,两个孩子可以按性别分四种关系
兄弟:哥哥在周二出生,弟弟出生有7种可能,弟弟在周二出生,哥哥出生有7种可能,但重复了一种“兄弟同时在周二出生”,所以总共有7+7-1=13种可能
兄妹:哥哥是周二生,妹妹有7种可能
姐弟:弟弟是周二生,姐姐有7种可能
姐妹:很显然pass
所以:满足“已知至少有一个孩子是在星期二出生的男孩”的条件有13+7+7=27种可能,但满足都是男孩的只有13种,因此:P(两个孩子都是男孩)=13/27
选择A选项

11.下列说法正确的有:()
A.visibility:hidden;所占据的空间位置仍然存在,仅为视觉上的完全透明;
B.display:none;不为被隐藏的对象保留其物理空间;
C.visibility:hidden;与display:none;两者没有本质上的区别;
D.visibility:hidden;产生reflow和repaint(回流与重绘);
解析:这道题也是出现很多次,考察visibility:hidden和display:none的区别,第一个:看不见,摸得着,第二个:看不见,摸不着,display是dom级别的,可以渲染和重绘。 visiblity不是dom级别的,只能重绘。
选择A.B选项

12.TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是?()
A.FIN B.FIN,PSH C.ACK D.FIN,ACK
解析:考察TCP四次握手流程,不废话,上图

今日头条2017秋招前端笔试试卷解析(2)_第1张图片
TIM截图20170801110504.png

很显然了,选C选项
13.页面有一个按钮button id为button1,通过原生的js如何禁用?()
A.document.getElementById(“button1”).setAttribute(“Readolny”,true);
B.document.getElementById(“button1”).setAttribute(“disabled”,”true”);
C.document.getElementById(“button1”).Readolny=true;
D.document.getElementById(“button1”).disabled=true;
这道题考察怎样禁用input元素
readonly 是把输入字段设置为只读,注意是输入字段,如text textarea等
disabled 是禁用input元素
而禁用方式可以直接设置disabled为真,也可以通过setAttribute设置disabled属性为真

14.关于下列CSS选择器:ID选择器、类选择器、伪类选择器、标签名称选择器,排序正确的是:()
A.ID选择器>Class选择器>伪类=标签名称选择器
B.ID选择器>伪类>Class选择器>标签名称选择器
C.ID选择器>Class选择器>伪类>标签名称选择器
D.ID选择器>Class选择器=伪类>标签名称选择器
解析:又一个基础题,在选择器优先级中
1.style权重最高(1000) 2.id选择器(100)
3.类选择器,伪类选择器(10) 4.标签(1)
所以选D选项

15.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
boolean isOdd = false;
for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
A.-1 B.-2 C.0 D.1
解析:这道题我是蒙的C,结果错了,答案是D
在此给出大神的解析过程,
第一种


今日头条2017秋招前端笔试试卷解析(2)_第2张图片

解析说 -1,-2好得到,0比较难但也可以得到
第二种
易知:每个线程对a 均做了两次读写操作,分别是 “ +1 ” 和 “ -2 ”
而题目问了是最终a 的结果,所以 a 的结果取决于各自线程对 a 的先后读写的顺序
结论:a的可能取值为-1、0、-2
如图:

今日头条2017秋招前端笔试试卷解析(2)_第3张图片

编程题
1.给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。
对于n=11, m=4, 按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, 因此第4个数是2.
对于n=200, m=25, 按字典序排列依次为1 10 100 101 102 103 104 105 106 107 108 109 11 110 111 112 113 114 115 116 117 118 119 12 120 121 122 123 124 125 126 127 128 129 13 130 131 132 133 134 135 136 137 138 139 14 140 141 142 143 144 145 146 147 148 149 15 150 151 152 153 154 155 156 157 158 159 16 160 161 162 163 164 165 166 167 168 169 17 170 171 172 173 174 175 176 177 178 179 18 180 181 182 183 184 185 186 187 188 189 19 190 191 192 193 194 195 196 197 198 199 2 20 200 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 51 52 53 54 55 56 57 58 59 6 60 61 62 63 64 65 66 67 68 69 7 70 71 72 73 74 75 76 77 78 79 8 80 81 82 83 84 85 86 87 88 89 9 90 91 92 93 94 95 96 97 98 99 因此第25个数是120…
解析:这道题我是用hashmap做的,将数据以(key=value)的形式放入hash表,然后运用hashmap自带的sort()函数,这个排序是字典序排序,所以直接用然后输出,但是问题是测试用例数据达10^18次级,所以数据溢出,所以求读者大神进行解答:
我的代码(用例通过50%,数据溢出):

import java.util.*;

public class Main {
public static void main(String[] args)
{
Scanner s=new Scanner( System.in );
inta=s.nextInt();
HashMap hashMap= new HashMap(a);

int b=s.nextInt();
for(inti=1;i<=a;i++)
{
String x=String.valueOf( i );
hashMap.put( x,x );
}
Collection keyset= hashMap.keySet();

List list =newArrayList(keyset);

//对key键值按字典升序排序
Collections.sort(list);
System.out.println(list.get( b-1));
}
}

到此试卷就解析完了,难度适中但是重基础,个人感觉还是需要对基础知识加以巩固,才能在以后测试中取得比较满意的成绩。

你可能感兴趣的:(今日头条2017秋招前端笔试试卷解析(2))