日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2017面试分享(js面试题记录)

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017面试分享(js面试题记录) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017面試分享(js面試題記錄)

1. 最簡單的一道題

'11' * 2'a8' * 3

2. 一道this的問題

var num = 10;var obj = {num:8,inner: {num: 6,print: function () {console.log(this.num);}}}num = 888;obj.inner.print(); // 6var fn = obj.inner.print;fn(); //888(obj.inner.print)(); //6(obj.inner.print = obj.inner.print)(); //888 這個點沒有太理解,雖然答對了

3. var和function的預解析問題,以及變量和function的先后順序的問題

// 以下代碼執行輸出結果是什么function b () {console.log(a);var a = 10;function a() {};a = 100;console.log(a);}b();function c () {console.log(a);function a() {};var a = 10;a = 100;console.log(a);}c();(function d (num) {console.log(num);var num = 10;}(100))(function e (num) {console.log(num);var num = 10;function num () {};}(100))(function f (num) {function num () {};console.log(num);var num =10console.log(num);}(100))//仍然是預解析(在與解析過程中還要考慮一下當前變量的作用于)function m () {console.log(a1); // underfinedconsole.log(a2); // underfinedconsole.log(b1); // underfinedconsole.log(b2); // underfinedif(false) {function b1 (){};var a1 = 10;}if(true) {function b2 (){};var a2 = 10;}console.log(a1); // underfinedconsole.log(a2); // 10console.log(b1); // underfinedconsole.log(b2); // function}m();function n() {if(2>1) {arr = 10;brr = 10;let arr;var brr;console.log(arr);console.log(brr);}}n(); // ReferenceError

此階段瀏覽器只是對var、function、函數形參進行一個解析的準備過程。而且在這個“預解析”過程中,有一個預解析先后順序,即函數的形參 -> function -> var。而且重名時預留函數、后來者覆蓋前者。預解析結果形參如果有值則解析到值,沒有則為underfined,函數則解析到整個函數體,變量都為underfined;這道題目中沒有參數出現,所以先不討論。所以這道題在“預解析”時,函數聲明權重優先會被提升

4. 一個算法問題

有一個已經排序的數組,比方[1,4,6,9,11,15,18],給你一個新的數,插入到數組中,寫一個function

5. 函數節流是什么,有什么優點(之前沒有了解過這個概念,懵逼了)

函數節流的目的

從字面上就可以理解,函數節流就是用來節流函數從而一定程度上優化性能的。例如,DOM 操作比起非DOM 交互需要更多的內存和CPU 時間。連續嘗試進行過多的DOM 相關操作可能會導致瀏覽器掛起,有時候甚至會崩潰。尤其在IE 中使用onresize 事件處理程序的時候容易發生,當調整瀏覽器大小的時候,該事件會連續觸發。在onresize 事件處理程序內部如果嘗試進行DOM 操作,其高頻率的更改可能會讓瀏覽器崩潰。又例如,我們常見的一個搜索的功能,我們一般是綁定keyup事件,每按下一次鍵盤就搜索一次。但是我們的目的主要是每輸入一些內容搜索一次而已。為了解決這些問題,就可以使用定時器對函數進行節流。

函數節流的原理

某些代碼不可以在沒有間斷的情況連續重復執行。第一次調用函數,創建一個定時器,在指定的時間間隔之后運行代碼。當第二次調用該函數時,它會清除前一次的定時器并設置另一個。如果前一個定時器已經執行過了,這個操作就沒有任何意義。然而,如果前一個定時器尚未執行,其實就是將其替換為一個新的定時器。目的是只有在執行函數的請求停止了一段時間之后才執行。
http://www.cnblogs.com/LuckyW...

6. 寫一個方法,實現傳入兩個參數(parentNode, childNode),要求如果childNode是parentNode的子孫節點,則返回為true,否則返回為false

7. dom事件流原理是什么,分為那幾個階段?

事件捕獲 處于目標階段 事件冒泡

8. dom事件委托什么原理,有什么優缺點

事件委托原理:事件冒泡機制

優點

1.可以大量節省內存占用,減少事件注冊。比如ul上代理所有li的click事件就很不錯。
2.可以實現當新增子對象時,無需再對其進行事件綁定,對于動態內容部分尤為合適

缺點

事件代理的常用應用應該僅限于上述需求,如果把所有事件都用事件代理,可能會出現事件誤判。即本不該被觸發的事件被綁定上了事件。

9. http的cache機制,以及200狀態下怎么實現 from cache(表示接觸最多的就是304的from cache)(用于優化,沒有接觸過,需要理解)

含義

定義:瀏覽器緩存(Browser Caching)是為了加速瀏覽,瀏覽器在用戶磁盤上對最近請求過的文檔進行存儲,當訪問者再次請求這個頁面時,瀏覽器就可以從本地磁盤顯示文檔,這樣就可以加速頁面的閱覽。

作用

cache的作用:
1、減少延遲,讓你的網站更快,提高用戶體驗。
2、避免網絡擁塞,減少請求量,減少輸出帶寬。

實現手段

Cache-Control中的max-age是實現內容cache的主要手段,共有3種常用策略:max-age和Last-Modified(If-Modified-Since)的組合、僅max-age、max-age和ETag的組合。

對于強制緩存,服務器通知瀏覽器一個緩存時間,在緩存時間內,下次請求,直接用緩存,不在時間內,執行比較緩存策略。
對于比較緩存,將緩存信息中的Etag和Last-Modified通過請求發送給服務器,由服務器校驗,返回304狀態碼時,瀏覽器直接使用緩存。

10. 一個原型鏈繼承的問題

// 有一個構造函數A,寫一個函數B,繼承Afunction A (num) {this.titileName = num;}A.prototype = {fn1: function () {},fn2: function () {}}

這個問題的關注點是B繼承的A的靜態屬性,同時B的原型鏈中不存在A實例的titleName屬性

11. 什么是虛擬dom

React為啥這么大?因為它實現了一個虛擬DOM(Virtual DOM)。虛擬DOM是干什么的?這就要從瀏覽器本身講起

如我們所知,在瀏覽器渲染網頁的過程中,加載到HTML文檔后,會將文檔解析并構建DOM樹,然后將其與解析CSS生成的CSSOM樹一起結合產生愛的結晶——RenderObject樹,然后將RenderObject樹渲染成頁面(當然中間可能會有一些優化,比如RenderLayer樹)。這些過程都存在與渲染引擎之中,渲染引擎在瀏覽器中是于JavaScript引擎(JavaScriptCore也好V8也好)分離開的,但為了方便JS操作DOM結構,渲染引擎會暴露一些接口供JavaScript調用。由于這兩塊相互分離,通信是需要付出代價的,因此JavaScript調用DOM提供的接口性能不咋地。各種性能優化的最佳實踐也都在盡可能的減少DOM操作次數。

而虛擬DOM干了什么?它直接用JavaScript實現了DOM樹(大致上)。組件的HTML結構并不會直接生成DOM,而是映射生成虛擬的JavaScript DOM結構,React又通過在這個虛擬DOM上實現了一個 diff 算法找出最小變更,再把這些變更寫入實際的DOM中。這個虛擬DOM以JS結構的形式存在,計算性能會比較好,而且由于減少了實際DOM操作次數,性能會有較大提升

12. js基礎數據類型和引用類型分別是什么?這個前提條件下寫一個getType,返回相應的類型

1.基本數據類型(自身不可拆分的):Undefined、Null、Boolean、Number、String
2.引用數據類型(對象):Object (Array,Date,RegExp,Function)

function gettype(nm){return Object.prototype.toString.call(nm); }

13. dom選擇器優先級是什么,以及權重值計算(一道老問題了)

1.行內樣式 1000
2.id 0100
3.類選擇器、偽類選擇器、屬性選擇器[type="text"] 0010
4.標簽選擇器、偽元素選擇器(::first-line) 0001
5.通配符*、子選擇器、相鄰選擇器 0000

14. vue雙向數據綁定的原理是什么

首先傳輸對象的雙向數據綁定 Object.defineProperty(target, key, decription),在decription中設置get和set屬性(此時應注意description中get和set不能與描述屬性共存)
數組的實現與對象不同。
同時運用觀察者模式實現wather,用戶數據和view視圖的更新

15. react和vue比較來說有什么區別

1 component層面,web component和virtual dom
2 數據綁定(vue雙向,react的單向)等好多
3 計算屬性 vue 有,提供方便;而 react 不行
4 vue 可以 watch 一個數據項;而 react 不行
5 vue 由于提供的 direct 特別是預置的 directive 因為場景場景開發更容易;react 沒有
6 生命周期函數名太長 directive

16. git使用過程中,如果你在開發著業務,突然另一個分支有一個bug要改,你怎么辦

git stash //將本次修改存到暫存區(緊急切換分支時) git stash pop //將所有暫存區的內容取出來

17. postcss的使用

18. 網頁布局有哪幾種,有什么區別

靜態、自適應、流式、響應式四種網頁布局
靜態布局:意思就是不管瀏覽器尺寸具體是多少,網頁布局就按照當時寫代碼的布局來布置;
自適應布局:就是說你看到的頁面,里面元素的位置會變化而大小不會變化;
流式布局:你看到的頁面,元素的大小會變化而位置不會變化——這就導致如果屏幕太大或者太小都會導致元素無法正常顯示。
自適應布局:每個屏幕分辨率下面會有一個布局樣式,同時位置會變而且大小也會變。

18. 執行下面代碼

var a = {}; var b = {key: 'b'}; var c = {key: 'c'}; var d = [3,5,6]; a[b] = 123; a[c] = 345; a[d] = 333; console.log(a[b]); // 345 console.log(a[c]); // 345 console.log(a[d]); // 333

19.

var R = (function() {var u = {a:1,b:2};var r = {fn: function(k) {return u[k];}}return r;}());R.fn('a'); // 1

上述代碼中如何獲取匿名函數中的u

20. 不適用循環語句(包括map、forEach方法)實現一個100長度的數組,索引值和值相同的數組[0,1,2,3,4,5........99]

var arr = new Array(100); //方法1 [...arr.keys()]; //方法二 Array.from(arr.keys());//方法三 Array.from({length: 100});// 方法四 借助string var arr1 = new Array(101); var str = arr1.join('1,'); str = str.replace(/(1\,)/g, function ($0, $1, index) {var start = '' + Math.ceil(index/2);if(index < str.length - 2) {start += ','}return start; }); return str.split(',');// 方法五(函數式變成,參考網絡) function reduce(arr, val) {if(Object.prototype.toString.apply(val)){return;}if(val >= 100) {return arr;}arr.push(val);return reduce(arr, val+1); } var res = reduce([], 0)

21. 下面語句執行結果輸出

var a = function (val, index) {console.log(index);return {fn: function (name) {return a(name, val);}} }var b = a(0); // underfined b.fn(1); // 0 b.fn(2); // 0 b.fn(3); // 0

22. 科普

1) dom節點的根節點是不是body
回答: 不是,dom節點的根節點是html(包含head和body,head中分為meta、title等。body又分為一組)

2)dom元素都會有offsetParent嗎
回答: offsetParent屬性返回一個對象的引用,這個對象是距離調用offsetParent的元素最近的(在包含層次中最靠近的),并且是已進行過CSS定位的容器元素。 如果這個容器元素未進行CSS定位, 則offsetParent屬性的取值為根元素(在標準兼容模式下為html元素;在怪異呈現模式下為body元素)的引用。 當容器元素的style.display 被設置為 "none"時(譯注:IE和Opera除外),offsetParent屬性 返回 null。

3) [1,3,5]轉譯成字符串是什么
回答: '1,3,5'
調用toString方法,生成該字符串

4)li標簽的祖級元素可以為li,父級元素也可以為例
回答: 錯誤

23. jsonp原理,jquery是怎么實現的,這樣實現有什么好處和壞處

原理

在同源策略下;在某個服務器下的頁面是無法獲取到該服務器以外的數據的;Jquery中ajax 的核心是通過 XmlHttpRequest獲取非本頁內容,而jsonp的核心則是動態添加 <script>標簽來調用服務器提供的 js腳本
當我們正常地請求一個JSON數據的時候,服務端返回的是一串 JSON類型的數據,而我們使用 JSONP模式來請求數據的時候服務端返回的是一段可執行的 JavaScript代碼。因為jsonp 跨域的原理就是用的動態加載 script的src ,所以我們只能把參數通過 url的方式傳遞, 所以jsonp的 type類型只能是get !

$.ajax({url: 'http://192.168.1.114/yii/demos/test.php', //不同的域type: 'GET', // jsonp模式只有GET 是合法的data: {'action': 'aaron'},dataType: 'jsonp', // 數據類型jsonp: 'backfunc', // 指定回調函數名,與服務器端接收的一致,并回傳回來 }) 其實jquery 內部會轉化成 http://192.168.1.114/yii/demos/test.php?backfunc=jQuery2030038573939353227615_1402643146875&action=aaron 然后動態加載 <script type="text/javascript"src="http://192.168.1.114/yii/demos/test.php?backfunc= 然后后端就會執行backfunc(傳遞參數 ),把數據通過實參的形式發送出去。

在jquery 源碼中, jsonp的實現方式是動態添加<script>標簽來調用服務器提供的 js腳本。jquery 會在window對象中加載一個全局的函數,當 <script>代碼插入時函數執行,執行完畢后就 <script>會被移除。同時jquery還對非跨域的請求進行了優化,如果這個請求是在同一個域名下那么他就會像正常的 Ajax請求一樣工作。

24. http協議屬于七層協議中的哪一層,下一層是什么

七層結構:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層
tcp屬于傳輸層;http屬于應用層。
表現層

25. js垃圾回收機制知道哪些,v8引擎使用的哪一種

js的兩種回收機制

1 標記清除(mark and sweep)
2 引用計數(reference counting)

javascript與V8引擎

垃圾回收機制的好處和壞處

好處:大幅簡化程序的內存管理代碼,減輕程序猿負擔,并且減少因為長時間運轉而帶來的內存泄露問題。

壞處:自動回收意味著程序猿無法掌控內存。ECMAScript中沒有暴露垃圾回收的借口,我們無法強迫其進行垃圾回收,更加無法干預內存管理。

V8 自動垃圾回收算法
https://segmentfault.com/a/11...

26. 作用域什么時候生成的?

頁面加載-->創建window全局對象,并生成全局作用域-->然后生成執行上下文,預解析變量(變量提升),生成全局變量對象;
$scope

27. websocket長連接原理是什么

含義

Websocket是一個持久化的協議,相對于HTTP這種非持久的協議來說。

原理

類似長輪循長連接 ; 發送一次請求 ; 源源不斷的得到信息

28. http緩存知道哪些

http://blog.csdn.net/yzf91321...

29. 講一下事件循環機制

執行上下文(Execution context)
函數調用棧(call stack)
隊列數據結構(queue)
Promise

https://zhuanlan.zhihu.com/p/...

30. 理解web安全嗎?都有哪幾種,介紹以及如何預防

1.XSS,也就是跨站腳本注入

攻擊方法: 1. 手動攻擊: 編寫注入腳本,比如”/><script>alert(document.cookie());</script><!--等, 手動測試目標網站上有的input, textarea等所有可能輸入文本信息的區域 2. 自動攻擊 利用工具掃描目標網站所有的網頁并自動測試寫好的注入腳本,比如:Burpsuite等 防御方法: 1. 將cookie等敏感信息設置為httponly,禁止Javascript通過document.cookie獲得 2. 對所有的輸入做嚴格的校驗尤其是在服務器端,過濾掉任何不合法的輸入,比如手機號必須是數字,通常可以采用正則表達式 3. 凈化和過濾掉不必要的html標簽,比如:<iframe>, alt,<script> 等 4. 凈化和過濾掉不必要的Javascript的事件標簽,比如:onclick, onfocus等 5. 轉義單引號,雙引號,尖括號等特殊字符,可以采用htmlencode編碼 或者過濾掉這些特殊字符 6. 設置瀏覽器的安全設置來防范典型的XSS注入

2.SQL注入

攻擊方法: 編寫惡意字符串,比如‘ or 1=1--等, 手動測試目標網站上所有涉及數據庫操作的地方 防御方法: 1. 禁止目標網站利用動態拼接字符串的方式訪問數據庫 2. 減少不必要的數據庫拋出的錯誤信息 3. 對數據庫的操作賦予嚴格的權限控制 4. 凈化和過濾掉不必要的SQL保留字,比如:where, or, exec 等 5. 轉義單引號,上引號,尖括號等特殊字符,可以采用htmlencode編碼 或者過濾掉這些特殊字符

3.CSRF,也就是跨站請求偽造

就是攻擊者冒用用戶的名義,向目標站點發送請求 防范方法: 1. 在客戶端進行cookie的hashing,并在服務端進行hash認證 2. 提交請求是需要填寫驗證碼 3. 使用One-Time Tokens為不同的表單創建不同的偽隨機值

40. sessionStorage和localstorage能跨域拿到嗎?比如我在www.baidu.com設置的值能在m.baidu.com能拿到嗎?為什么

localStorage會跟cookie一樣受到跨域的限制,會被document.domain影響

41. localstorage不能手動刪除的時候,什么時候過期

除非被清除,否則永久保存 clear()可清楚
sessionStorage 僅在當前會話下有效,關閉頁面或瀏覽器后被清除

42. cookie可以設置什么域?可以設置.com嗎

可以通過設置domin來實現

43. 登錄狀態的保存你認為可以保存在sessionstorage或者localstorage或者cookie或者你知道的哪種方式,存在了哪里??為什么保存在那里

44. flux -> redux -> mobx 變化的本質是什么

存儲結構 將對象加工可觀察 函數式 vs 面向對象
https://zhuanlan.zhihu.com/p/...

45. 按需加載路由怎么加載對應的chunk文件的?換句話說瀏覽器怎么知道什么時候加載這個chunk,以及webpack是怎么識別那個多個經過hash過的chunk文件

50. get和post有什么區別?get可以通過body傳遞數據嗎

把數據放到 body 里面,必須用 POST 方式取,這是 HTTP 協議限制的。

51. 下拉刷新你怎么實現

52. 預加載options請求為什么會出現,能避免這個請求嗎?

針對上方問題存在沒有解答的 ; 或則解答不正確詳細的 ; 歡迎留言 ; 我會及時更正 ; 也歡迎留下你認為經典的面試題 ; 我都會補充進來 ; 共同進步

總結

以上是生活随笔為你收集整理的2017面试分享(js面试题记录)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费午夜视频在线观看 | 精品在线视频一区二区三区 | 国产精品久久久久久中文字 | 欧美日日 | 超碰综合网| 亚洲视频免费在线播放 | 成人免费在线小视频 | 国产一区二区三区免费观看 | 日韩av免费一区 | 蜜臀久久99静品久久久久久 | 国产av无码专区亚洲av毛网站 | 亚洲天堂美女 | 男生插女生的视频 | 调教91| 国产123 | 久久成人福利 | 在线观看av的网址 | 黄色香蕉网 | 亚洲美女屁股眼交 | 亚洲视频高清 | 欧美成人三级伦在线观看 | 黄色影音 | 好妞色妞国产在线视频 | 日韩免费一区二区 | 亚洲日本黄色 | 日韩一区二区三区免费在线观看 | 成人三级在线播放 | 福利视频不卡 | 成人免费短视频 | 天堂无乱码 | 理论片在线观看视频 | 国产精品一线 | 欧美片网站yy | 欧美黑人性受xxxx精品 | 久久综合影视 | 亚洲欧洲一二三区 | 久久久久人妻精品一区二区三区 | 精品视频中文字幕 | 日韩av不卡一区二区 | 97国产精品久久 | 国产精品久久久久久久专区 | 亚洲女人天堂 | 亚洲AV无码国产精品国产剧情 | 日韩精品视频在线观看免费 | 黄色的网站免费看 | 一级黄色免费毛片 | 一级黄色大片网站 | 视频一区二区免费 | 国产伦精品一区二区三区免费 | 日韩欧美啪啪 | 中文字幕第一页在线 | 日韩欧美aaa | 先锋影音av中文字幕 | 永久中文字幕 | 免费禁漫天堂a3d | 国产免费无遮挡吸奶头视频 | 爱爱91| 日日草日日干 | 男生把女生困困的视频 | 日韩精品极品视频免费观看 | 婷婷五月情 | 国产精品国产三级国产专区52 | 大黄网站在线观看 | 秋霞欧美一区二区三区视频免费 | 日韩小视频在线观看 | 精品日韩在线 | 国产卡一卡二 | 亚欧日韩 | 国产尤物av尤物在线看 | 国产免费黄色录像 | 91黄色短视频 | 美女被艹视频网站 | 日韩精品中文字幕在线观看 | 精品久久五月天 | 亚洲性xxx| 久久中文字幕在线观看 | 国产成人精品一区二区在线小狼 | 国产午夜福利一区二区 | 日本高清黄色 | 蜜桃久久精品成人无码av | 麻豆app在线观看 | 亚洲自拍偷拍av | 国产chinese男男网站大全 | 综合网久久 | 91香蕉国产在线观看软件 | 69av片| 欧美丰满老熟妇aaaa片 | 99精品视频免费 | 蜜臀久久| 亚洲激情一区二区三区 | 免费视频日韩 | 国产一级精品视频 | 久久影院午夜理论片无码 | 久久久久亚洲无码 | 人人干人人舔 | 曰韩一级片 | 国产黄色美女视频 | www.白白色 | 成人综合网址 |