天天看點

秋招筆試碰到的疑難題目1

30、關于return語句

function foo(a,b){
  return 
  a+b;
}
var t=foo(3,4);
console.log(t)//undefined      

29、關于自執行匿名函數

for(var i=0;i<3;i++){
  setTimeout((function(a){
    console.log(a);
  })(i),0);
}
//0 ,1 , 2      

28、來自網易筆試的一道題目:下面表明可以重複綁定的,并且不會彈出錯誤:

var dd=document.getElementById("dd");

for(var i=0;i<3;i++){
  dd.onclick=function(){
    console.log(1);
  }
}      

27、關于未定義的變量

var ttt="ttt";
console.log(ttt+abc)//ReferenceError: abc is not defined      

26、$("[href]").html("")這個是所有的包含有href屬性的innerHTML都會被置空。來自搜狗筆試。

//這樣是沒有效果的
var li=document.getElementsByTagName("li");
var lii=document.getElementsByClassName("foo");
lii.innerHTML=""; //無效
li.innerHTML=""; //無效

//隻有确定某一個才有效果。
li[0].innerHTML="3";
lii[1].innerHTML="";      

25、form表單在你不寫enctype屬性時,也預設為其添加了enctype屬性值,預設值是enctype="application/x-www-form-urlencoded".這個屬性管理的是表單的MIME編碼,共有三個值可選:

                  ①application/x-www-form-urlencoded  (預設值)

                  ②multipart/form-data

                  ③text/plain

①application/x-www-form-urlencoded是預設值,大家可能在AJAX裡見過這個:xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 這兩個要做的是同一件事情,就是設定表單傳輸的編碼。在AJAX裡不寫有可能會報錯,但是在HTML的form表單裡是可以不寫enctype="application/x-www-form-urlencoded"的,因為預設HTML表單就是這種傳輸編碼類型。

而②multipart-form-data是用來指定傳輸資料的特殊類型的,主要就是我們上傳的非文本的内容,比如圖檔或者mp3等等。

③text/plain是純文字傳輸的意思,在發送郵件時要設定這種編碼類型,否則會出現接收時編碼混亂的問題,網絡上經常拿text/plain和text/html做比較,其實這兩個很好區分,前者用來傳輸純文字檔案,後者則是傳遞html代碼的編碼類型,在發送頭檔案時才用得上。

①和③都不能用于上傳檔案,隻有multipart/form-data才能完整的傳遞檔案資料。

24、設有2條路由21.1.193.0/24和21.1.194.0/24,如果進行路由彙聚,覆寫這兩條路由的位址是____.

        A 21.1.200.0/22                 B 21.1.192.0/23

        C 21.1.192.0/21                 D 21.1.224.0/20

  194:11000010

  193:11000001

C選項無論21還是22,其實都符合題目要求!使用22個網絡位的話,會在選擇路由時,符合“最長字首比對”這一規則,這是因為網絡字首越長,其位址塊就越小,因而路由就越具體,效率也越高。使用21的話,也沒什麼影響,就是不符合上面這一規則而已!

23、訂單資料庫的設計

之前一直不知道訂單詳情表要怎麼搞,因為,你下一個訂單可能包含好幾種商品啊,後面想通了,以訂單号為主鍵,多插入幾條資料不就好了,為什麼一定要放在一行呢?

22、二叉樹的對稱序列就是中序周遊。

21、enum, 如果中間有參數初始化了,就在該參數基礎上,下一個未指派的參數值為該指派參數的值+1。

20、100M記憶體  1G的資料,采用的算法應該是歸并排序。

19、sizeof 空類的大小為1

18、二分法查找

例子:2,5,7,10,14,15,18,23,35,41,52 中查找12

查找序列是15 7 10 14,查找不到

17、系統開銷的計算 

處理機時間片為200ms,中間間隔10ms,系統開銷是多少。

16、京東的一道選擇題cpi的計算

CPI(Clock cycle Per Instruction)表示執行某個程式的指令平均時鐘周期數則:

CPI=TC/IC (IC[instrution counter]表示某個程式的所有指令的條數;tc表示執行某個程式所花費的時鐘周期)

15、<input> type 屬性

描述
button 定義可點選的按鈕(大多與 JavaScript 使用來啟動腳本)
checkbox 定義複選框。
color 定義拾色器。
date 定義日期字段(帶有 calendar 控件)
datetime 定義日期字段(帶有 calendar 和 time 控件)
datetime-local
month 定義日期字段的月(帶有 calendar 控件)
week 定義日期字段的周(帶有 calendar 控件)
time 定義日期字段的時、分、秒(帶有 time 控件)
email 定義用于 e-mail 位址的文本字段
file 定義輸入字段和 "浏覽..." 按鈕,供檔案上傳
hidden 定義隐藏輸入字段
image 定義圖像作為送出按鈕
number 定義帶有 spinner 控件的數字字段
password 定義密碼字段。字段中的字元會被遮蔽。
radio 定義單選按鈕。
range 定義帶有 slider 控件的數字字段。
reset 定義重置按鈕。重置按鈕會将所有表單字段重置為初始值。
search 定義用于搜尋的文本字段。
submit 定義送出按鈕。送出按鈕向伺服器發送資料。
tel 定義用于電話号碼的文本字段。
text 預設。定義單行輸入字段,使用者可在其中輸入文本。預設是 20 個字元。
url 定義用于 URL 的文本字段。

不看不知道,一看,吓一跳,盡然有這麼多屬性。

14、union 和union all的差別

union和union all的差別是,union會自動壓縮多個結果集合中的重複結果,而union all則将所有的結果全部顯示出來,不管是不是重複。

Union:對兩個結果集進行并集操作,不包括重複行,同時進行預設規則的排序;

Union All:對兩個結果集進行并集操作,包括重複行,不進行排序;

Intersect:對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;

Minus:對兩個結果集進行差操作,不包括重複行,同時進行預設規則的排序。

可以在最後一個結果集中指定Order by子句改變排序方式。

union 和 union all都可以将多個結果集合并,而不僅僅是兩個,你可以将多個結果集串起來。

使用union和union all必須保證各個select 集合的結果有相同個數的列,并且每個列的類型是一樣的。但列名則不一定需要相同,oracle會将第一個結果的列名作為結果集的列名。

13、數組是引用類型資料,之前一直以為它是基本類型,具體參見以下代碼:

var arr=[1,2,3];
    var arr2=arr;
    arr2.push(4);
    var arr3=arr.slice(0);

    console.log(arr3==arr);//flase
    console.log(arr2===arr);//true      

上面我先push了一下,再來複制,一個用了==,一個用了===,可以明顯的判斷數組确實是引用類型資料,

12、以下哪些是JavaScript中标準的全局屬性(多選)

  A. Infinity  B. NaN  C. undefined  D. null

  答案:ABC

  解析:全局屬性:NaN,Java,undefined,Infinity,Packages

  頂層函數(全局函數)

函數
decodeURI() 解碼某個編碼的 URI。
decodeURIComponent() 解碼一個編碼的 URI 元件。
encodeURI() 把字元串編碼為 URI。
encodeURIComponent() 把字元串編碼為 URI 元件。
escape() 對字元串進行編碼。
eval() 計算 JavaScript 字元串,并把它作為腳本代碼來執行。
getClass() 傳回一個 JavaObject 的 JavaClass。
isFinite() 檢查某個值是否為有窮大的數。
isNaN() 檢查某個值是否是數字。
Number() 把對象的值轉換為數字。
parseFloat() 解析一個字元串并傳回一個浮點數。
parseInt() 解析一個字元串并傳回一個整數。
String() 把對象的值轉換為字元串。
unescape() 對由 escape() 編碼的字元串進行解碼。

  頂層屬性(全局屬性)

方法
Infinity 代表正的無窮大的數值。
java 代表 java.* 包層級的一個 JavaPackage。
NaN 訓示某個值是不是數字值。
Packages 根 JavaPackage 對象。
undefined 訓示未定義的值。

11、以下代碼運作結果是

  var mystring=" I am a student";

  var a=mystring.substring(9,13);

  document.write(a);

  A. stud   B. tuden  C. udent  D. uden 

  答案:D

  解析:substring() 方法用于提取字元串中介于兩個指定下标之間的字元。傳回是一個新的字元串,該字元串值包含 stringObject 的一個子字元串,其内容是從 start 處到 stop-1 處的所有字元,其長度為 stop 減start。當第二個為負數的時候,會變成0,并比較兩個參數的大小,将小的放在前面。

substr(s1,s2)接受兩個參數,第一個是起始位置,第二個是參數數表示截取的長度。當第二個為負數的時候,會變成0,也就是截取0個數字,傳回空。

10、考察對new的了解,還有就是this指向哪裡

     var name="u";

        function p(name){
            this.name=name;
        }

        p1=p("t");  
        p2=new p("r");

        console.log(p1);//undefined
        console.log(p2);//p的一個執行個體對象
        console.log(name);//t
        console.log(p2.name);//r
        console.log(p1.name);// cannot read property      

9、考察對css位置的了解,x是否都在y的左邊,還有兩個選項忘了

  <p style="float:left">x<p>
    <p style="float:right">y</p>
    <br>
    <br>
    <p style="float:left">x</p>
    <p style="width:100%;background:red;">y</p>      
秋招筆試碰到的疑難題目1

8、對一些不常用css的考察

  • :nth-last-of-type() 
  • :last-of-type 
  • :nth-of-type

這幾個都是存在的。。。。。貌似我選錯了

7、用和不用use strict

解析:嚴格模式下,對象不能有重名的屬性。正常模式下,如果對象有多個重名屬性,最後指派的那個屬性會覆寫前面的值。嚴格模式下,這屬于文法錯誤。

      嚴格模式詳解參考:http://www.cnblogs.com/jiqing9006/p/5091491.html

    我嘗試結果是:

    IE:

    使用嚴格模式:(報錯)

      

秋招筆試碰到的疑難題目1

    不使用嚴格模式:(不報錯)

秋招筆試碰到的疑難題目1

    Chrome:

    用不用嚴格模式都不報錯:

秋招筆試碰到的疑難題目1
秋招筆試碰到的疑難題目1

    Firefox:

秋招筆試碰到的疑難題目1
秋招筆試碰到的疑難題目1

6、考察math round, ceil ,floor的差別

  round()方法第二題解析過,是取與 x 最接近的整數,不一定大于等于參數

  floor() 方法可對一個數進行下舍入。該方法執行的是向下取整計算,它傳回的是小于或等于函數參數,并且與之最接近的整數。

  ceil() 方法可對一個數進行上舍入。該方法執行的是向上取整計算,它傳回的是大于或等于函數參數,并且與之最接近的整數。

5、頁面有一個按鈕button id為 button1,通過原生的js如何禁用?

<input type="button" id="button1" value="1">
    <input type="button" id="button2" value="2">
    <input type="button" id="button3" value="3">
    <input type="button" id="button4" value="4">
    <input type="button" id="button5" value="5">
    <input type="button" id="button6" value="6">
    <script>
    var t1=document.getElementById("button1");
    var t2=document.getElementById("button2");
    var t3=document.getElementById("button3");
    var t4=document.getElementById("button4");
    var t5=document.getElementById("button5");
    var t6=document.getElementById("button6");
    t1.setAttribute("disabled"," true");//yes
    t2.setAttribute("readonly",true);//no
    t3.disabled=true;//yes
    t4.readonly=true;//no
    t5.setAttribute("disabled",true);//yes
    t6.setAttribute("readonly","true");//no      

實驗發現設定readonly屬性都是不可以的,disabled無論true加不加雙引号都可以,“.”法和setAttribute兩個都可以使用

4、頁面有一個按鈕button id為 button1,通過原生的js 設定背景色為紅色?

正确答案 : A
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";      

3、請選出所有的置換元素(    )

正确答案 : ABCD
A img
B input
C textarea
D select      

2、typeof 的一些用法

var str=new String(4)
        var num=new Number(5)
        console.log(typeof "123"); //string
        console.log(typeof 123); //number
        console.log(typeof str); //object
        console.log(typeof num); //object
        
        function t (s1,s2,s3) {
            console.log(arguments.length)
        }
        t(23,32,23);//3      

1、自調用匿名函數語句

function sayhi(m){console.log(m)}("hi");      //不會執行
!function sayhi(m){console.log(m)}("hi");    //立即執行,輸出hi
+function sayhi(m){console.log(m)}("hi");    //立即執行,輸出hi
~function sayhi(m){console.log(m)}("hi");    //立即執行,輸出hi
var s=function sayhi(m){console.log(m)}("hi");//立即執行,輸出hi      

第一個函數是個匿名函數,并不會立即執行,因為js将其當成是函數定義;其後三個前面分别加了一些符号,js就會将其解析成表達式,就會立即執行。第四個是真正意義上的函數表達式,是以,會立即執行,輸出結果。相比采用括号包住的自調用匿名函數,他還少了個一個字元

樹林美麗、幽暗而深邃,但我有諾言尚待實作,還要奔行百裡方可沉睡。 -- 羅伯特·弗羅斯特

繼續閱讀