web前端整套面试题(二)--今日头条面试题

12道单选,7道不定项选择,2道编程题

一、单选(12题)

1.[单选题]在HTML中,( )可以在网页上通过链接直接打开邮件客户端发送邮件。

  A.<a href=”telnet:ming.zhou@nowcoder.com”>发送邮件</a>

  B.<a href=”mail:ming.zhou@nowcoder.com”>发送邮件</a>

  C.<a href=”mailto:ming.zhou@nowcoder.com”>发送邮件</a>

  D.<a href=”ftp:ming.zhou@nowcoder.com”>发送邮件</a>

答案:C    <a href=”tel:110120119”>可以实现手机拨号</a>

 

2.[单选题]下面哪条声明能固定背景图片()

  A.background-attachment:fixed;

  B.background-attachment:scroll;

  C.background-origin: initial;

  D.background-clip: initial;

答案:A  

background-attachment有三个值,scroll是默认值,背景图像会随着页面其余部分的滚动而移动。

                 fixed当页面的其余部分滚动时,背景图像不会移动。

                 inherit规定应该从父元素继承 background-attachment 属性的设置。

视差滚动就可以用background-attachment:fixed去实现

 

3.[单选题]以下关于盒子模型描述正确的是:

  A.标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + 左右padding + width

  B.IE盒子模型中:盒子总宽度 = 左右margin + 左右border + width

  C.标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + width

  D.IE盒子模型中:盒子总宽度 = width

答案:A

标准盒子模型中:盒子总宽度 = 左右外边距(margin) + 左右边框的宽度(border) + 左右内边距(padding) + 设置的width

IE盒子模型中:盒子总宽度 = 左右外边距(margin) + 设置的width(包括左右border + 左右内边距padding + 实际的内容的width)

 

4.[单选题]下面哪个属性不会让 div 脱离文档流(normal flow)?

  A.position: absolute;

  B.position: fixed;

  C.position: relative;

  D.float: left;

答案;C  相对定位是自私的,自己被偏移走了还要站着原来的位置不放,即相对定位不会脱离文档流

 

5.[单选题]英文字母全部转为大写正确的是()

  A.text-transform: capitalize;

  B.text-transform: lowercase;

  C.text-transform: uppercase;

  D.font-weight: bold;

答案:C  

capitalize:文本中的每个单词以大写字母开头。

lowercase:定义仅有大写字母。

uppercase:定义仅有小写字母。

font-weight: bold;属性设置文本的粗细。

 

6.[单选题]假设在今日头条里面,有很多工作人员检查新闻是不是属于虚假新闻,所有新闻真实率到达了98%,工作人员在检验一个真实的新闻把它检验为一个虚假的新闻的概率为2%,而一个虚假的新闻被检验为真实的新闻的概率为5%.那么,一个被检验为真实的新闻确实是真实的新闻的概率是多大?

  A.0.9991

  B.0.9989

  C.0.9855

  D.0.96

答案:B

分析条件得到:真的新闻:98%,假的新闻:2%;真的->假的:2%,假的->真的:5%

分析要求:被检验为真实的新闻确实是真实的新闻

首先要明确被检验为真实的新闻包括了(本来是真的和本来是假的)所以分母扩大为(真->真+假->真)

结果为:(真->真)/(真->真+假->真) = (98%*(1-2%))/(98%*(1-2%)+2%*5%) = 0.9604/0.9614 = 0.9989......

 

7.[单选题]现在有两堆石子,小今与小条玩游戏,2个人都足够聪明,两个人规定:每次每人只能从其中一堆中取走1个或2个或3个石子,最后将石子全部取完的人胜利.现在两堆石子的个数为8和9,请问如何安排才能让小今必胜?

  A.让小今先取

  B.让小条先取

  C.没有策略能够让小今必胜

  D.以上说法都不正确

答案:A

首先要明白一点,只要是去取得时候正好的4的倍数,取得那个人就输了,比如4,不管取走几个,剩下的都可以直接拿走;再比如8,不管取走几个,另一个人拿的时候都可以给对方留下4个,所以只要给对方留下4的倍数,对方就输了

所以,小今先去取9个的那一堆拿走一个,接下来小条去哪堆取,小今也去哪堆取,根据小今取得个数,给小条留下4的倍数(实际问题是4个)就行了

 

8.单选题]表toutiao_tb

  title data auther type

  abc 2016.2.23 bob 1

  bcv 2016.3.3 http 1

  cvt 2016.3.3 http 1

  bcvvcm 2016.3.5 js 2

  nmhh 2016.2.3 html 2

  hhj 2016.3.3 java 3

  rrr 2016.3.2 cc 1

  查询title中包含cv且type是1的记录

  A.select * from where title = ‘cv’ and type=’1′

  B.select * from where title = ‘%cv%’ and type=’1′

  C.select * from where title = ‘*cv’ and type=’1′

  D.select * from where title =’*cv*’ and type=’1’

答案:B

%代表任意长度的任意字符,_代表一个长度的任意字符

比如‘%张%’ ->字符串中带张      '张_' -> 姓张的两个字的

 

9.[单选题]下面那个页面调度算法,当进程分配到的页面数增加时,缺页中断的次数可能增加也可能减少

  A.FIFO算法

  B.LRU算法

  C.Clock算法

  D.LFU算法

答案:A   

FIFO(First in First out)先进先出

LRU(Least Recently Used)最近最久未使用

LFU(Least Frequently Used)最近最少使用

本来进程分配到的页面数增加时,缺页中断的次数会减少的,但是FIFO会出现belady异常,如果不出现Belady异常,则页面数增加时,缺页中断的次数会减少;但如果出现Belady异常,则页面数增加时,缺页中断的次数反而增加。

 

10.[单选题]写出如下代码弹出的结果

复制代码

 1 <script> 
 2     var m= 1, j = k = 0; 
 3     function add(n) { 
 4         return n = n+1; 
 5   } 
 6     y = add(m); 
 7     function add(n) { 
 8         return n = n + 3; 
 9     } 
10 z = add(m); 
11 </script> 

复制代码

y和z的最终结果为:

  A.2,4

  B.4,4

  C.2,2

  D.报异常

答案:B

主要有几个知识点:1.函数声明提升  2、js里面没有函数重载的概念 3、变量作用域问题

所以上面代码先解析了add函数,但是第二个在后面给第一个覆盖了,所以y和z调用的都是第二个add函数,y调用add函数传参m,用完一次就销毁了,下次重新赋值,所以z传值的时候m还是等于1

 

11.[单选题]下面代码的输出结果为:

1 (function() {
2       var a = b = 5;
3   })();   
4 console.log(b);
5 console.log(a);

  A.5,5

  B.undefind,undefind

  C.5,undefind

  D.5,ReferenceError

答案:D

b = 5,a is not a defined

上面的程序实际上是:

复制代码

1 var b;
2 (function() {
3     var a;
4     b=5;
5     a = b ;
6   })();
7 console.log(b);
8 console.log(a);

复制代码

 

12.[单选题]页面有一个按钮button id为 button1,通过原生的js 设置背景色为红色?

  A.document.getElementById(‘button1’).style.backgroundColor=”red”;

  B.document.getElementById(‘button1’).style.backgroundcolor=”red”;

  C.document.getElementById(‘button1’).style.backGroundColor=”red”;

  D.document.getElementById(‘button1’).style.bgcolor=”red”;

答案:A

js里样式设置直接把css写法的的“-”去掉,再改写为驼峰写法即可。

 

二、不定项选择(7道)

1.[不定项选择题]下面哪些是HTML5 新增的表单元素?

  A.datalist

  B.optgroup

  C.output

  D.legend

答案:AC,   h5新增的表单元素有datalist(规定输入域的选项列表),keygen(提供一种用户验证的可靠方式),output(用于不同类型的输出)

新增的表单元素详情:http://www.w3school.com.cn/html5/html_5_form_elements.asp

 

2.[不定项选择题]请选出所有的置换元素()

  A.img

  B.input

  C.textarea

  D.select

答案:A,B,C,D  置换元素(replaced element)主要是指 img, input, textarea, select, object 等这类默认就有 CSS 格式化外表范围的元素

 

3.[不定项选择题]下列说法正确的是()

  A.display: none;不为被隐藏的对象保留其物理空间;

  B.visibility:hidden;所占据的空间位置仍然存在,仅为视觉上的完全透明;

  C.visibility:hidden;产生reflow和repaint(回流与重绘);

  D.visibility:hidden;与display: none;两者没有本质上的区别;

答案:A,B

visibility:hidden;会产生repaint(重绘)       display: none;会产生reflow(回流)

 

4.[不定项选择题]以下描述正确的:

  A.Http协议所使用的运输层协议是UDP

  B.Https的端口号是443

  C.TCP注重数据安全性,UDP注重数据传输快

  D.传输层提供端到端的可靠报文传递和错误恢复

答案:BCD

运输层的协议是TCP/UDP

TCP是点到点的,面向连接的,可靠地协议;UDP是无连接的,不可靠的,面向报文的协议

 

5.[不定项选择题]下列关于操作系统进程与线程的区别正确的是:

  A.进程是资源分配的基本单位

  B.线程是资源分配的基本单位

  C.进程是资源调度的基本单位

  D.线程是资源调度的基本单位

答案:BD

线程是资源分配和调度的基本单位。进程拥有资源,线程共享资源。

一个程序至少有一个进程,一个进程至少有一个线程

引入进程是为了使多个程序能并发执行以提高资源利用率和系统吞吐量

引入线程是为了减少程序在并发执行时所付出的时空开销,使操作系统具有更好的并发性

 

6.[不定项选择题]下列排序算法不稳定的有?

  A.插入排序

  B.希尔排序

  C.冒泡排序

  D.堆排序

  E.归并排序

  F.快速排序

  G.选择排序

答案:B,D,F,G

排序算法总结:http://www.cnblogs.com/zhangxue521/p/6748085.html

 

7.[不定项选择题]页面有一个按钮button id为 button1,通过原生的js如何禁用?

  A.document.getElementById(“button1”).readolny= true;

  B.document.getElementById(“button1”).setAttribute(“readolny”,”true”);

  C.document.getElementById(“button1”).disabled = true;

  D.document.getElementById(“button1”).setAttribute(“disabled”,”true”);

答案:CDReadonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等。

CD两种方法都可以给button加disabled属性,还有不要纠结D中的第二个参数加了引号"true"有人认为应该不加,其实哪怕写个0的也是可以的,是转化为boolean值得。

补充一点,disabled禁用之后不会跟随get/post提交,readonly禁用之后会跟随GET/opst提交数据;

 

三、编程题

1.[编程题] 回文解码

  现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串。你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符串是什么。字符串的下标是从 0 开始的,你可以从样例中得到更多信息。输入描述:

  每组测试用例仅包含一组数据,每组数据第一行为原字符串,长度不超过 10 ,仅包含大小写字符与数字。接下来会有一个数字 n 表示有 n 个操作,再接下来有 n 行,每行两个整数,表示每次操作的(p , l)。保证输入的操作一定合法,最后得到的字符串长度不超过 1000。

  输出描述:

  输出一个字符串代表最后得到的字符串。

  输入例子:

  ab

  2

  0 2

  1 3

  输出例子:

  abbaabb

答案:1、java

复制代码

 1 public class Main {
 2     public static void main(String[] args) {
 3         Scanner scanner = new Scanner(System.in);
 4         String str = scanner.nextLine();
 5         int n = scanner.nextInt();
 6         for (int i = 0; i < n; i++) {
 7             int start = scanner.nextInt();
 8             int length = scanner.nextInt();
 9             str = concatStr(str,start,length);
10         }
11         System.out.println(str);
12     }
13 
14     private static String concatStr(String str, int start, int length) {
15 //        因为stringbuffer里面有reverse和insert这两个方法,所以先将输进去的str转换为StringBuffer
16         StringBuffer newStr = new StringBuffer(str);
17 //        截取对应的字符长度,并且反转
18         StringBuffer jiequ = new StringBuffer(newStr.substring(start, start+length));
19         jiequ.reverse();
20 //        再原先的字符串后面添加反转后的字符串
21         newStr.insert(str.length(),jiequ);
22         return newStr.toString();
23     }
24 }

复制代码

  2、js(js是在网上找的,不太明白= + 是什么东西,谁有好的解决办法,求参考看一下)

复制代码

 1 var input = "ab\n2\n0 2\n1 3";  
 2 function reverscon (input) {  
 3     input_array = input.split("\n");  
 4     var nLine = 0;  
 5       
 6     while(nLine < input_array.length){  
 7         var line = input_array[nLine++].trim();  
 8         if(line === ''){  
 9             continue;  
10         }  
11         var s = line;  
12         var n = +input_array[nLine++];  
13         while(n--){  
14             var input_arrays = input_array[nLine++].trim().split(' ');  
15             var p = +input_arrays[0];  
16             var l = +input_arrays[1];  
17   
18             //你的代码  
19             var substring = s.substring(p,p+l);  
20             substring = substring.split('').reverse().join('');
21             var arrs = s.split('');
22             // 这一步需要一个变量保存结果,因为splice返回的是 
23             arrs.splice(p+l,0,substring);
24           // 被删除的字符,所以连写的话会返回空  
25              s = arrs.join('');    //abbaabb  
26         }     
27     }  
28     console.log(s);  
29 };  
30     reverscon(input); 

复制代码

2.[编程题] 出专辑

  你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?

  输入描述:

  每组测试用例仅包含一组数据,每组数据第一行为三个正整数 n, s, L。 保证 n ≤ 100 , s ≤ L ≤ 10000

  输出描述:

  输出一个整数代表你至少需要的 CD 数量。

  输入例子:

  7 2 6

  输出例子:

  4

答案:java

复制代码

 1 import java.util.Scanner;
 2  
 3 public class JRTT2 {
 4  
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Scanner scanner = new Scanner(System.in);
 8         while (scanner.hasNext()) {
 9             int n = scanner.nextInt();
10             int s = scanner.nextInt();
11             int L = scanner.nextInt();
12             System.out.println(getNum(n, s, L));
13         }
14     }
15  
16     public static int getNum(int n, int s, int L) {
17         int maxPerCD = (L + 1) / (s + 1); // 每张CD最大的存歌量
18         int num = 0;
19         if (maxPerCD > n) { // 每张CD最大的存歌量大于歌数
20             if (n % 13 == 0) {
21                 return 2;
22             } else {
23                 return 1;
24             }
25         }
26         if (maxPerCD % 13 == 0) { // CD最大的存歌量能被13整除就自减1
27             maxPerCD--;
28         }
29         while (n / maxPerCD != 0) {
30             n -= maxPerCD;
31             num++;
32         }
33         if (n != 0) { // 此时的n表示剩余歌的数量
34             if (n % 13 == 0) {
35                 if (maxPerCD - n == 1) {//剩余歌的数量被13整除,且与最大存歌量只相差1个的时候,此时不能通过交换来节省。只有再加一个CD
36                     num += 2;
37                 } else { //通过交换来节省所需CD的数量
38                     num++;
39                 }
40             } else {
41                 num++;
42             }
43         }
44         return num;
45     }
46 }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值