欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字节跳动2017前端工程师实习生笔试题

程序员文章站 2022-06-09 10:42:55
...

1.下面标签嵌套正确的是(D)

A.<ul><p>牛客网</p></ul>
B.<a href="#"><a href="#">牛客网</a></a>
C.<dl><li>牛客网</li></dl>
D.<ol><li>牛客网</li></ol>

解析:

A.ul只能紧挨着li

B.a中不能再嵌套a

C.dl dt

D.ol li是有序排列


2.下面哪些是HTML5 新增的表单元素(AC

A.datalist
B.optgroup
C.output
D.legend

解析:

HTML5新特性:新的表单元素 ——4个

1.datalist   数据列表

2.progress  进度条

3.meter  刻度尺/用红黄绿三色表示出一个数值所在范围

4.output  输出,用于描述表单中的计算结果,属于语义标签,样式与span无异

参考:http://www.w3school.com.cn/html5/html_5_form_elements.asp


3. 在HTML中,( C)可以在网页上通过链接直接打开邮件客户端发送邮件。

A.<a href=”telnet:[email protected]”>发送邮件</a>
B.<a href=”mail:[email protected]”>发送邮件</a>
C.<a href=”mailto:[email protected]”>发送邮件</a>
D.<a href=”ftp:[email protected]”>发送邮件</a>

解析:

<a href="mailto:[email protected]?subject=邮件标题&body=邮件内容">发送邮件</a>


4.请选出所有的置换元素(A B C D)

A.img
B.input
C.textarea
D.select

解析: 

置换元素:浏览器根据元素的标签和属性,来决定元素的具体显示内容

<img>、<input>、<textarea>、<select>、<object> 都是置换元素


5.下面哪条声明能固定背景图片(A)

A.background-attachment:fixed;
B.background-attachment:scroll;
C.background-origin: initial;
D.background-clip: initial;

解析:

background-attachment有三个值:

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

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

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


6.下列说法正确的是(AB

A.display: none;不为被隐藏的对象保留其物理空间;
B.visibility:hidden;所占据的空间位置仍然存在,仅为视觉上的完全透明;
C.visibility:hidden;产生reflow和repaint(回流与重绘);
D.visibility:hidden;与display: none;两者没有本质上的区别;

解析:

visibility:hidden;会产生repaint(重绘) 

display: none;会产生reflow(回流)


7.以下关于盒子模型描述正确的是(A)

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

解析:

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

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


8.下面哪个属性不会让 div 脱离文档流(normal flow)(C)

A.position: absolute;
B.position: fixed;
C.position: relative;
D.float: left;

解析:

A:position: absolute;生成绝对定位的元素,相对于static 定位以外的第一个父元素进行定位。

B:position: fixed;生成绝对定位的元素,相对于浏览器窗口进行定位。

C:position: relative;生成相对定位的元素,相对于其正常位置进行定位。生成相对定位,也就是说还在原本的上下左右之间,上下左右的元素都不变,没有能脱离文档流。

D:float: left;浮动。

(在模拟的一些简单网页布局中都有用到,较为基础)


9.英文字母全部转为大写正确的是(C

A.text-transform: capitalize;
B.text-transform: lowercase;
C.text-transform: uppercase;
D.font-weight: bold;

​​​​​​​解析:

text-transform:capitalize;是首字母大写

text-transfrom:lowercase;是全部字母为小写

text-transfrom:uppercase;是全部字母为大写

font-weight: bold;字体为粗体


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

A.0.9991
B.0.9989
C.0.9855
D.0.96

​​​​​​​解析:

真的新闻:98%,假的新闻:2%;

被检验为真实的新闻 = 真新闻检验为真+假新闻检验为真=98%*(1-2%)+(1-98%)*5%

真新闻被检验为真 = 98% *(1-2%)

所以概率=被检验为真实的新闻/真新闻被检验为真≈0.9989


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

A.让小今先取
B.让小条先取
C.没有策略能够让小今必胜
D.以上说法都不正确

​​​​​​​解析:

只要是取得时候是4的倍数,取得那个人就输了

所以,小今先去取9个的那一堆拿走一个,接下来小条去哪堆取,小今也去哪堆取

根据小今取得个数,给小条留下4的倍数(实际问题是4个)就可以了

(小学奥赛题)


12.以下描述正确的 ( BCD )

A.Http协议所使用的运输层协议是UDP
B.Https的端口号是443
C.TCP注重数据可靠性,UDP注重数据传输快
D.传输层提供端到端的可靠报文传递和错误恢复

​​​​​​​解析:

参考:https://segmentfault.com/a/1190000004598598


13.表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 toutiao_tb where title = 'cv' and type='1'
B.select * from toutiao_tb where title like '%cv%' and type=1
C.select * from toutiao_tb where title like '*cv' and type=1
D.select * from toutiao_tb where title ='*cv*' and type='1'

​​​​​​​解析:

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

这是一个模糊查询:
%...%:这是查询包含...的任意字符串
%...:这是查询以...结束的任意字符串
...%:这是查询以...开头的任意字符串

答案都不对,正确答案是 select * from toutiao_tb  where  title like '%cv%' and type=1;


14.下列关于操作系统进程与线程的区别正确的是 (AD)

A.进程是资源分配的基本单位
B.线程是资源分配的基本单位
C.进程是资源调度的基本单位
D.线程是资源调度的基本单位

​​​​​​​解析:

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

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

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

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

参考:https://segmentfault.com/a/1190000005884656


15.下面那个页面调度算法,当进程分配到的页面数增加时,缺页中断的次数可能增加也可能减少 (A)

A.FIFO算法
B.LRU算法
C.Clock算法
D.LFU算法

​​​​​​​解析:

FIFO(First in First out)先进先出

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

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


16.下列排序算法不稳定的有 (B D F G

A.插入排序
B.希尔排序
C.冒泡排序
D.堆排序
E.归并排序
F.快速排序
G.选择排序

​​​​​​​解析:

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


17.运行以下程序

<script> 
    var m= 1, j = k = 0; 
    function add(n) { 
        return n = n+1; 
  } 
    y = add(m); 
    function add(n) { 
        return n = n + 3; 
    } 
z = add(m); 
</script> 

y和z的最终结果为 (B)

A.2,4
B.4,4
C.2,2
D.报异常

​​​​​​​解析:

首先解析了add函数,但是第二个在后面给第一个覆盖了,

所以y和z调用的都是第二个add函数,

y调用add函数传参m,用完后,下次重新赋值,

所以z传值的时候m还是等于1

注:

  1. 在Function类型里,函数是对象,函数名是指向函数对象的指针, 没有重载 !
  2. 当声明了多个同名函数时, 后面的函数会覆盖前面的函数 ,所以在题目中,事实上只有后面的add(n)起了作用,因此,两个结果都为4。
  3. 补充一点:个人感觉这里有一点 函数声明和函数表达式 的区别需要特别注意!解析器在向执行环境中加载数据时,会率先读取函数声明,并使其在执行任何代码之前可用。也就是先读取function函数的声明,再读取函数表达式y = add(m);语句 和 z = add(m);语句, 所以 y = add(m);语句虽然在函数声明之前,但依然应用了函数。

18.下面的输出结果 (D)

(function() {
      var a = b = 5;
  })();   
console.log(b);
console.log(a);
A.5,5
B.undefined,undefined
C.5,undefined
D.5,Uncaught ReferenceError: a is not defined

​​​​​​​解析:

var b;
 (function() {
     var a;
     b=5;
     a = b ;
   })();
 console.log(b);
 console.log(a);

19.页面有一个按钮button id为 button1,通过原生的js如何禁用?(IE 考虑IE 8.0以上版本) (C D

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");

解析:


20.页面有一个按钮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";

​​​​​​​解析:

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

参考:https://www.cnblogs.com/zhengyan/p/4897848.html


???

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

①JS

var line = readline();
 
var n = readline();
 
for(var i=0;i<n;i++){
 
    var line2 = readline().split(' ');
 
    var start = parseInt(line2[0]);
 
    var len = parseInt(line2[1]);
 
    var temp = line.substr(start,len).split('').reverse().join('');
 
    line = line.slice(0,start+len) + temp + line.slice(start+len);
 
}
 
print(line);

②Java(​​​​​​​???)

public class Main {
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          String str = scanner.nextLine();
          int n = scanner.nextInt();
          for (int i = 0; i < n; i++) {
              int start = scanner.nextInt();
              int length = scanner.nextInt();
              str = concatStr(str,start,length);
         }
         System.out.println(str);
     }
 
     private static String concatStr(String str, int start, int length) {
 //因为stringbuffer里面有reverse和insert这两个方法,所以先将输进去的str转换为StringBuffer
         StringBuffer newStr = new StringBuffer(str);
 //截取对应的字符长度,并且反转
         StringBuffer jiequ = new StringBuffer(newStr.substring(start, start+length));
         jiequ.reverse();
 //再原先的字符串后面添加反转后的字符串
         newStr.insert(str.length(),jiequ);
         return newStr.toString();
     }
 }

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

var lines = readline()
 
lines = lines[0].split(' ')
 
//获得数据
 
var n = parseInt(lines[0])
 
var s = parseInt(lines[1])
 
var l = parseInt(lines[2])
 
//1.判断一张光盘能放几首歌,因为间隔为1s,所以给每首歌加1s
 
var sLength = s + 1
 
//向下取整
 
var num = Math.floor(l / sLength)
 
//最后一首歌不用间隔,需要判断
 
if((l+1)%sLength === 0){
 
    num++
 
}
 
// 不能出现13
 
// (1).刚好为13
 
if(num == 13){
 
    num--
 
}
 
  
 
//2.计算总共放几张光盘
 
var CDNum = Math.floor(n/num)
 
if(n%num != 0){
 
    CDNum++
 
}
 
// (2).大于13,那么就只有可能发生在最后一张光盘身上
 
if(num > 13){
 
    if(n % num == 13){
 
        CDNum++
 
    }
 
}
 
console.log(CDNum)