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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM