前端面試題記錄 不斷更新

2021-10-08 22:28:38 字數 3366 閱讀 3881

1、當a等於什麼的時候,以下條件成立

/* 

let a = ???;

if(a == 1 && a == 2 && a == 3)

*/

let a = 

}if(a == 1 && a == 2 && a == 3)

//或者

let b =

}console.log(b == 1 && b == 2 && b == 3);

2、實現深拷貝的方法(兩種以上)

let a = [1,2,3,4,5,6,7,8,9,10];

//第一種,使用assign

let b = object.assign(,a);

b.push(11);

console.log(a);

console.log(b);

//第二種,使用迴圈

let b = ;

a.map(item => b.push(item));

b.push(11);

console.log(a);

console.log(b);

//第三種,使用json.parse與json.stringify

let b = json.parse(json.stringify(a));

b.push(11);

console.log(a);

console.log(b);

3、如何避免介面被盜刷

/* 1 、 驗證碼(最簡單有效的防護),採用點觸驗證,滑動驗證或第三方驗證碼服務,普通驗證碼很容易被破解

2 、 頻率,限制同裝置,同ip等傳送次數,單點時間範圍可請求時長

3 、 歸屬地,檢測ip所在地是否與手機號歸屬地匹配;ip所在地是否是為常在地

4 、 可疑使用者,對於可疑使用者要求其主動發簡訊(或其他主動行為)來驗證身份

5 、 黑名單,對於黑名單使用者,限制其操作,api介面直接返回success,1可以避免浪費資源,2混淆黑戶判斷

6 、 簽名,api介面啟用簽名策略,簽名可以保障請求url的完整安全,簽名匹配再繼續下一步操作

7 、 token,對於重要的api介面,生成token值,做驗證

8 、 https,啟用https,https 需要秘鑰交換,可以在一定程度上鑑別是否偽造ip

9 、 **混淆,發布前端**混淆過的包

10 、 風控,大量肉雞來襲時只能受著,同樣攻擊者也會暴露意圖,分析意圖提取演算法,分析判斷是否為惡意 如果是則斷掉;異常賬號及時鎖定;或從產品角度做出調整,及時止損。

11 、 資料安全,資料安全方面做策略,攻擊者得不到有效資料,提高攻擊者成本

12 、 惡意ip庫,過濾惡意ip */

4、請寫出下列**的輸出順序

async function a()

async function b()

console.log("func start");

settimeout(() => , 0);

a();

new promise((resolve,rejece)=>);

1、func start

2、a start

3、b start

4、promise start

5、a end

6、settimeout end

5、輸入框輸入時,如何防抖,並且實現中文輸入

6、將'abc'轉成'abc'

let a = 'abc';

let b = '';

for(let i = 0;i < a.length;i++)else

}console.log(b);

7、實現乙個sleep等待函式

function sleep(time), time);

});}async function func()

func();

//僅僅使用settimeout也是可以,自行拓展

8、prototype與__proto__的區別

9、去除下面陣列的重複元素(至少兩種方法)

let a = [1,1,2,2,3,3,4,5,6,7,5,1];

let b = ;

for(let i = 0;i < a.length;i++)

}console.log(b);

//或者使用es6

let c = new set(a);

console.log(array.from(c));

//或者使用includes

let d = ;

for(let i = 0;i < a.length;i++)

}console.log(d);

10、使下面的陣列變為一維陣列

let a = [[1,2,3],[[4,5,6]],[7,[8,[9]]]];

//期望[1,2,3,4,5,6,7,8,9]

let b = a.join(",").split(",");

console.log(b);

//或者

let c = a.tostring().split(",");

console.log(c);

//或者

let d = ;

function e(arr)else

}}e(a);

console.log(d);

11、跨域問題的產生原因及解決方法

原因:

1、協議不同

2、網域名稱不同

3、埠不同

解決方法

1、vue專案下,可以設定**解決

2、使用jsonp解決,但是只支援get請求

3、後端設定請求頭,支援通過對應請求

4、使用cors,

12、為什麼v-for不能和v-if一起連用

1、優先順序問題

2、vue中是優先處理v-for然後才會執行v-if

3、這就會造成效能浪費,得不償失

13、any與unknown的區別

let a:any = "10";

let b:string = "agwenbi";

b = a;//不會報錯

let aa:unknown = "10";

let bb:string = "agwenbi";

//bb = aa;報錯

//any可以影響其它變數的型別,而unknown不行

前端基礎面試題整理(不斷更新)

div css的布局比較table布局有什麼優點?改版得時候更方便,只需要改css檔案 頁面載入速度很快 結構化清晰 頁面顯示簡潔 表現與結構相分離 易於優化對搜尋引擎更友好,排名更容易靠前 為什麼利用多個網域名稱來儲存 資源會更有效?cdn快取更方便 突破瀏覽器併發執行 節約主網域名稱的連線數,優...

web前端面試題記錄

1.vue全家桶定義 2.路由怎麼定義使用的 路由的導航前衛有哪幾種 3.http請求get 與post的不同,post請求的引數放到 請求頭的訊息體中 4.vuex有哪個部分組成 action與mutataions有什麼不同 action是怎麼改變state中的值 commit 5.元件中怎麼傳值...

web前端面試題記錄

筆者近期在找工作,偶遇到一家,廣州9 14k的web前端面試,面試過程中是由面試官手寫題目,要求現場回答,特此記錄,簡歷上寫的是熟悉vue和小程式,出的題目基本上和vue相關的較多,乘著還有點記憶,趕緊記錄下來 題設1 你知道怎麼在小程式上內嵌網頁嗎,現在有乙個需求,現在小程式頁面上有乙個內嵌網頁,...