問答題:
1.移動端前端開發和pc端的區別
系統設計題
實現js**無限級**樹形控制項,點開箭頭,子選單展開,選中或取消父選單,所有子選單都取消。
在棧空的情況下,不能退棧
鄰接矩陣頂點數和邊數
nodejs怎麼獲取當前指令碼所在的路徑
定義帶正方形的列表:list-style:square
表單提交只能是get和post方法,預設是get方法,
資料通過設定的action屬性提交到指定位置
" str hah ".replace(/\s+$/g,"");
1+'0'===1
'0'undefined
'0'+1===1
==進行型別轉換時,乙個是數值,乙個是字串,比較之前先將字串轉為數字
var bb=1;
function
aa(bb);
aa(bb);
console.log(bb);//函式中的bb已失效。
settimeout(function
(),0)
promise.resolve(function
())new promise(function
(resolve));
console.
log(4);
輸出:3
4 undefined 1
參考:
settimeout(function
(), 0)
new promise(function
executor
(resolve)
console.
log(3);
}).then(function
())console.
log(5);
解析:
之前說過,在定時器,事件,ajax等操作的時候,會是乙個非同步操作,會把該操作放到乙個task queue裡,需要等當前主線程的任務完成後,會讀取任務佇列(task queue)中的事件。
那麼,settimeout會放到任務佇列中,**繼續往下走。
所以先輸出2 3。
promise中的then操作是放在執行棧,也就是主線程的最後。
那麼主線程會繼續往下走咯。
所以輸出 5 4
最後主線程的任務搞完了,才會去執行task queue中的任務。
所以最後執行1
// 2, 3, 5, 4, 1
function
fn1()
function
fn2()
fn3();
}fn2();
var a,b,c;
a=b=c=[1,2];b=[3,4];
c.length=1;console.log(a)
//輸出[1]
變數a指向c的引用,中斷了指向b的引用。b指向c的引用。
c始終指向[1,2];
var name=null;var domain=`$.com`;
/^d+[^d]+/.test("d7d");
上述式子中,第乙個^表示開始符,第二個^表示非,d表示字母d,+匹配前面的子表示式一次或多次
/^d+[^d]+/.test("123def");
區分:\d匹配乙個數字字元。等價於 [0-9]。
var test =)();
}};test.func();
輸出 test test undefined test
回答:
注意:1.立即執行函式,沒有明確的呼叫物件,因此就是最外層的window,this指向window.(之類的沒有明確的指明呼叫物件,只是想對語義上的)
2.另外注意的是:如果乙個函式是自身呼叫,沒有其他的物件呼叫的話,在非嚴格模式下,this指標指向的是全域性物件,也就是window物件,如果在嚴格模式下,this指標指向的是undefined
知識點:this的指向 ,用法:物件函式呼叫,哪個物件呼叫就指向哪個物件
this永遠指向的是最後呼叫它的物件,也就是看它執行的時候是誰呼叫的;
test.func();這裡是test**在呼叫**,所以this指向它,所以前兩個指的就是』test』,
而下面的立即執行函式第乙個this在非嚴格模式下指的是window,這裡window沒有定義foo,所以就是undefined
最後的self就是它的最外層的this
參考:題目變形:
var foo = "global-foo";//全域性變數
var test =)();
}};test.func();
輸出 test test global-foo test
var a="baidu";
//輸出1
知識點:執行eval會把引數放到全域性執行
如果你間接的使用 eval(), 如通過乙個引用來呼叫它而不是直接的呼叫eval。 從ecmascript 5起它工作在全域性作用域而不是區域性作用域中;這裡是var e=eval;所以是間接呼叫了,所以是全域性的
參考:mdn
function
test()}
var f1=test(),
f2=test();
f1();//0
f1();//1
f2();//0
var arr=[1,2,3];
arr.shift();
arr.push(1);
arr.unshift(2);
var arrnew=arr.concat([1,2]);
console.log(arrnew);
輸出:[2, 2, 3, 1, 1, 2]
知識點:shift刪除陣列第乙個元素,並返回該值,會更改陣列;
unshift在陣列開頭新增若干個元素。更改陣列
var x='undefined';
var y='false';
var z="";
var a= undefined;
var b= null;
var c = 0;
function
assert
(xvar)
assert(x);//true
assert(y);//true
assert(z);//false
assert(a);//false
assert(b);//false
assert(c);//false
知識點:
es會使用b**oolean()轉換函式**將這個表示式的結果轉換為乙個布林值。
以下情況會被認為返回false:
「」 空的字串
為 0 的數字
為 null 的物件
為 undefined 的物件
布林值 false
反之為真
for(var i=1;i<=3;i++))(i),0);
}//1 2 3
知識點:利用閉包的特性儲存值
參考:
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...
百度筆試題
1 完成函式 size t foo unsigned int a1,size t al1,unsigned int a2,size t al2 其中a1和a2都為無符號陣列,al1和al2為陣列的長度,陣列的長度為偶數。無符號陣列由一對數字區間組成。如下例 a1 為 0,1,3,6,10,20 a2...