1. 程式人生 > >整理出來的前端js面試題

整理出來的前端js面試題

禁止 如何改變 產生 字符串 避免 得到 作用 擴展 如何

15HTTP狀態

100 Continue 繼續,一般在發送post請求時,已發送了http header之後服務端將返回此信息,表示確認,之後發送具體參數信息

200 OK 正常返回信息

201 Created 請求成功並且服務器創建了新的資源

202 Accepted 服務器已接受請求,但尚未處理

301 Moved Permanently 請求的網頁已永久移動到新位置。

302 Found 臨時性重定向。

303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI

304 Not Modified 自從上次請求後,請求的網頁未修改過。

400 Bad Request 服務器無法理解請求的格式,客戶端不應當嘗試再次使用相同的內容發起請求。

401 Unauthorized 請求未授權。

403 Forbidden 禁止訪問。

404 Not Found 找不到如何與 URI 相匹配的資源。

500 Internal Server Error 最常見的服務器端錯誤。

503 Service Unavailable 服務器端暫時無法處理請求(可能是過載或維護)。

16git fetchgit pull的區

git pull:相當於是從遠程獲取最新版本並merge到本地

git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge

17、對前端界面工程師這個職位是怎麽樣理解的?它的前景會怎麽樣

首先要求我們的代碼高復用低耦合,這樣文件小,好維護,而且好擴展。

前端是最貼近用戶的程序員,比後端、數據庫、產品經理、運營、安全都近。

1、實現界面交互

2、提升用戶體驗

3、加快前後端數據交互

前端是最貼近用戶的程序員,前端的能力就是能讓產品從 90分進化到 100 分,甚至更好,

參與項目,快速高質量完成實現效果圖,精確到1px;

與團隊成員,UI設計,產品經理的溝通;

做好的頁面結構,頁面重構和用戶體驗;

處理hack,兼容、寫出優美的代碼格式;

針對服務器的優化、擁抱最新前端技術。

18

.document load 和document ready的區別
Document.onload 是在結構和樣式加載完才執行js
Document.ready原生種沒有這個方法,jquery中有 $().ready(function)

19、介紹一下 JS 的基本數據類型和內置對象

Undefined、Null、Boolean、Number、String

JS 有哪些內置對象。

Object 是 JavaScript 中所有對象的父對象

數據封裝類對象:Object、Array、Boolean、Number、String

其他對象:Function、Argument、Math、Date、RegExp、Error

20、列舉幾條 JavaScript 的基本代碼規範

(1)不要在同一行聲明多個變量

(2)如果你不知道數組的長度,使用 push

(3)請使用 ===/!== 來比較 true/false 或者數值

(4)對字符串使用單引號 ‘‘(因為大多時候我們的字符串。特別html會出現")

(5)使用對象字面量替代 new Array 這種形式

(6)絕對不要在一個非函數塊裏聲明一個函數,把那個函數賦給一個變量。瀏覽器允許你這麽做,但是它們解析不同

(7)不要使用全局函數

(8)總是使用 var 來聲明變量,如果不這麽做將導致產生全局變量,我們要避免汙染全局命名空間

(9)Switch 語句必須帶有 default 分支

(10)使用 /**...*/ 進行多行註釋,包括描述,指定類型以及參數值和返回值

(11)函數不應該有時候有返回值,有時候沒有返回值

(12)語句結束一定要加分號

(13)for 循環必須使用大括號

(14)if 語句必須使用大括號

(15)for-in 循環中的變量應該使用 var 關鍵字明確限定作用域,從而避免作用域汙染

(16)避免單個字符名,讓你的變量名有描述意義

(17)當命名對象、函數和實例時使用駝峰命名規則

(18)給對象原型分配方法,而不是用一個新的對象覆蓋原型,覆蓋原型會使繼承出現問題

(19)當給事件附加數據時,傳入一個哈希而不是原始值,這可以讓後面的貢獻者加入更多數據到事件數據裏,而不用找出並更新那個事件的事件處理器

21、javascript的typeof返回哪些數據類型
Object number function boolean underfind

22、例舉3種強制類型轉換和2種隱式類型轉換?
強制(parseInt,parseFloat,number)
隱式(== – ===)

23split() join() 的區別
前者是切割成數組的形式,後者是將數組轉換成字符串

24、數組方法pop() push() unshift() shift()(將所學的所有對數組增刪的方法都列出來)
Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除

push方法用於將一個或多個元素添加或附加到數組的末尾。使用這種方法,可以通過傳遞多個參數來附加多個元素。

  Unshift方法就像在數組開頭工作的push方法。該方法用於將一個或多個元素添加到數組的開頭。

25IE和DOM事件流的區別,什麽是DOM事件流
1.執行順序不一樣、
2.參數不一樣
3.事件加不加on
4.this指向問題
Dom事件流見 https://segmentfault.com/a/1190000004463384 (一定要理解,理解之後寫出答案)


26.ajax請求的時候get 和post方式的區別
一個在url後面 一個放在虛擬載體裏面
有大小限制
安全問題
應用不同 一個是論壇等只需要請求的,一個是類似修改密碼的


27、元素的樣式/類如何改變?

  可以通過以下方式完成:

  document.getElementById(“myText”).style.fontSize = “20?;

  或

  document.getElementById(“myText”).className = “anyclass”;

28cookie session 的區別

1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙

考慮到安全應當使用session。

3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能

考慮到減輕服務器性能方面,應當使用COOKIE。

4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。

5、所以個人建議:

將登陸信息等重要信息存放為SESSION

其他信息如果需要保留,可以放在COOKIE中

29DOM操作——怎樣添加、移除、移動、復制、創建和查找節點

1)創建新節點

createDocumentFragment() //創建一個DOM片段

createElement() //創建一個具體的元素

createTextNode() //創建一個文本節點

2)添加、移除、替換、插入

appendChild()

removeChild()

replaceChild()

insertBefore() //並沒有insertAfter()

3)查找

getElementsByTagName() //通過標簽名稱

getElementsByName() //通過元素的Name屬性的值(IE容錯能力較強,

會得到一個數組,其中包括id等於name值的)

getElementById() //通過元素Id,唯一性

30nullundefined的區別

null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。

當聲明的變量還未被初始化時,變量的默認值為undefined。

null用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的對象。

undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:

(1)變量被聲明了,但沒有賦值時,就等於undefined。

(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。

(3)對象沒有賦值的屬性,該屬性的值為undefined。

(4)函數沒有返回值時,默認返回undefined。

null表示"沒有對象",即該處不應該有值。典型用法是:

(1) 作為函數的參數,表示該函數的參數不是對象。

(2) 作為對象原型鏈的終點。

31new操作符具體幹了什麽呢?

1、創建一個空對象,並且 this 變量引用該對象,同時還繼承了該函數的原型。

2、屬性和方法被加入到 this 引用的對象中。

3、新創建的對象由 this 所引用,並且最後隱式的返回 this

var obj = {};

obj.__proto__ = Base.prototype;

Base.call(obj);

32、什麽是JavaScript?(這是基本題,對很多程序員來說也是送分題!)

  JavaScript是客戶端和服務器端腳本語言,可以插入到HTML頁面中,並且是目前較熱門的Web開發語言。同時,JavaScript也是面向對象編程語言。

  類似的基本題目還包括:JavaScript都有哪些類型?JavaScript是誰發明的?......

33、列舉JavaJavaScript之間的區別?

Java是一門十分完整、成熟的編程語言。相比之下,JavaScript是一個可以被引入HTML頁面的編程語言。這兩種語言並不完全相互依賴,而是針對不同的意圖而設計的。 Java是一種面向對象編程(OOPS)或結構化編程語言,類似的如C ++或C,而JavaScript是客戶端腳本語言,它被稱為非結構化編程。

 34、什麽是全局變量?這些變量如何聲明,使用全局變量有哪些問題?

  全局變量是整個代碼長度可用的變量,也就是說這些變量沒有任何作用域。var關鍵字用於聲明局部變量或對象。如果省略var關鍵字,則聲明一個全局變量。

  例:// Declare a global globalVariable = “Test”;

  使用全局變量所面臨的問題是本地和全局變量名稱的沖突。此外,很難調試和測試依賴於全局變量的代碼。

35git fetchgit pull的區

git pull:相當於是從遠程獲取最新版本並merge到本地

git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge

36、說說你對MVCMVVM的理

MVC

View 傳送指令到 Controller

Controller 完成業務邏輯後,要求 Model 改變狀態

Model 將新的數據發送到 View,用戶得到反饋

所有通信都是單向的。

Angular它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。

組成部分Model、View、ViewModel

View:UI界面

ViewModel:它是View的抽象,負責View與Model之間信息轉換,將View的Command傳送到Model;

Model:數據訪問層

37attributeproperty的區別是什麽

attribute是dom元素在文檔中作為html標簽擁有的屬性;

property就是dom元素在js中作為對象擁有的屬性。

所以:

對於html的標準屬性來說,attribute和property是同步的,是會自動更新的,

但是對於自定義的屬性來說,他們是不同步的,

整理出來的前端js面試題