要求
頁面標題爲「個人頁面」
頁面中引入了一個外部 CSS 文件,文件路徑爲 /style.css
頁面中引入了另外一個外部 CSS 文件,路徑爲 /print.css,該文件僅在打印時生效
頁面中引入了另外一個外部 CSS 文件,路徑爲 /mobile.css,該文件僅在設備寬度小於 500 像素時生效
頁面中引入了一個外部 JS 文件,路徑爲 /main.js
頁面中引入了一個外部 JS 文件,路徑爲 /gbk.js,文件編碼爲 GBK
頁面中有一個 SVG 標籤,SVG 裏面有一個直徑爲 100 像素的圓圈,顏色隨意
注意題目中的路徑
回答css
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>個人頁面</title> <link rel="stylesheet" href="/style.css"> <link rel="stylesheet" href="/print.css" media="print"> <link rel="stylesheet" href="/mobile.css" media="(max-width=500px)"> <script src="/main.js"></script> <script src="/gbk.js" charset="GBK"></script> </head> <body> <svg> <circle cx="100" cy="100" r="50" fill="red" /> </svg> </body> </html>
回答要點:
meta viewport
媒體查詢(CSS深刻淺出第五課)
動態 rem 方案(CSS深刻淺出第九課)
這三個知識點只有第一個我有講過,你須要自學第二點和第三點。
若是你們在這道題上都答得很差,我會在考試後直播這兩節課的錄屏。(由於我以爲視頻裏已經講得很好了,不必從新講一遍)html
回答
1 meta viewportcss3
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
2 媒體查詢(2種方式)數組
//a 可在link元素中加 <link rel="stylesheet" media="(max-width: 500px)" href="./style.css" /> //b 可在樣式表中加 <style> @media(max-width:500px){ body{background: red;} } </style> //若是媒體分辨率小於500px,這個CSS會生效,背景會變成藍色
3 動態 rem 方案(2種方式)瀏覽器
//a 用 JS 動態調整 REM <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1"> <script> var pageWidth = window.innerWidth document.write('<style>html{font-size:'+pageWidth+'px;}</style>') </script> //b 另外一種方法添加在 scss 文件裏( 這種方法可讓px 可自動變 rem)
評語
關於rem的適配的問題
不要使用document.write
設置完html的font-size以後,記得重置下body的font-size緩存
回答
1 用過css3 的圓角、陰影、gradients(漸變) 、transitions(過渡) 與 animations(動畫) 等
2 實現圓角矩形和陰影,預覽連接:http://js.jirengu.com/zatukasofu/1/edit?html,css,output服務器
//實現圓角 border-radius: 10px; //實現陰影 box-shadow: 10px 10px 5px #888888;
回答
1 若是一個函數調用了做用域外的變量,那麼這個函數+這個變量就組成了「閉包」,以下例就是一個閉包:閉包
function f1(){ var n=123; function f2(){ console.log(n); } return f2; } var result=f1() result() //123
2 閉包的用途有三個:app
讀取函數內部的變量 讓這些變量始終保持在內存中 封裝對象的私有屬性和私有方法
回答curl
//這是一個函數 function add(a,b){ return a+b }
1 call用法(有三個參數,第一個傳遞的是this,後兩位傳遞的是連續參數)
add.call(add,5,3) //8
2 apply用法(與call不一樣的是後兩位傳遞的是數組參數)
add.apply(add,[5,3]) //8
3 bind用法(與call,apply不一樣的是,它不會當即調用,而是會生成一個新的函數)
var result=add.bind(add,5,3) result() //8
回答
一、2XX 成功:請求被正常處理
1.1 200 OK
表示從客戶端發來的請求在服務器端被正常處理
1.2 204 No Content
表示服務器接收的請求以成功處理,但沒有資源可返回,即:響應報文中不含實體的主體部分
1.3 206 Partial Content
表示客戶端進行了範圍請求且服務器成功執行了這部分的GET請求,響應報文中包含由Content_Range指定範圍的實體內容
「Content_Range爲請求首部的一種類型,後面的隨筆會講到」
二、3XX 重定向: 服務器須要執行某些特殊處理以正確處理請求(即URI地址或者資源的緩存的資源有效時間過時)
2.1 301 Moved Permanently
永久性重定向:表示請求的資源已被分配了新的URI,之後應使用資源如今的URI,若是已經保存了書籤,這時候應該按照Location首部提示的URI從新保存
2.2 302 Found
臨時性重定向:表示請求的資源已被分配到了新的URI,但願(本次)能使用新的URI訪問
2.3 303 See Other
表示請求對應的資源存在另外一個URI,應該使用GET方法定向獲取請求的資源
PS:當30一、30二、303響應狀態碼返回,幾乎全部瀏覽器都會把POST改爲GET,並刪除請求報文內的主體,以後請求自動再次發送
30一、302標準禁止將POST改成GET,但實際中都會容許這麼作~~~GG
2.4 304 Not Modified
表示客戶端發送得附帶條件的請求時,服務器運行請求訪問,但未知足條件的狀況,304返回時,不包含任何響應的主體部分
附帶條件:採用GET方法的請求報文中包含If-......條件的任一首部,後面的隨筆中介紹
2.5 307 Temporary Redirect
臨時重定向:禁止將POST轉換爲GET,該狀態碼會嚴格遵照瀏覽器標準
三、客戶端錯誤:4XX的響應結果代表客戶端是發生錯誤的緣由所在
3.1 400 Bad Ruquest
請求報文存在語法錯誤
3.2 401 Unauthorized
發送的請求須要有經過http認證(BASIC認證、DIGEST認證)的認證信息
PS:若以前已經進行了一次請求,則表示用戶認證失敗
返回含有401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部用來質詢用戶信息
3.3 403 Forbidden
對請求資源的訪問被服務器拒絕(服務端沒有必要給出拒絕的詳細理由,若是想作說明,可在實體主體部分對緣由進行描述)
舉例:未得到文件系統的訪問受權、訪問權限出現某些問題等
3.4 404 Not Found
服務器上沒法找到請求的資源
四、 5XX服務器錯誤:服務器自己發生錯誤
4.1 500 Internal Server Error
服務器端執行請求時發生錯誤
4.2 503 Server Unavailable
服務器暫時處於超負載或者正在停機維護,如今沒法處理請求
其中
第四部分的內容是 username=ff&password=123
第二部分必須含有 Content-Type 字段
請求的路徑爲 /path
回答
1 HTTP post請求格式以下
1 動詞 路徑 協議/版本 2 Key1: value1 2 Key2: value2 2 Key3: value3 2 Content-Type: application/x-www-form-urlencoded 2 Host: www.baidu.com 2 User-Agent: curl/7.54.0 3 4 要上傳的數據
2 寫一個HTTP post 請求的內容
1 POST /path HTTP/1.1 2 Host: www.baidu.com 2 User-Agent: curl/7.54.0 2Accept: */* 2 Content-Length: 18 2 Content-Type: application/x-www-form-urlencoded 3 4 username=ff&password=123
O(nn)
O(n log2 n)
O(n + max)
回答
1 O(nn)
冒泡排序。重複地走訪過要排序的數列,一次比較兩個元素,若是他們的順序錯誤就把他們交換過來。
2 O(n log2 n)
快速排序。找其中的一個數字做爲標杆,小於標杆的數字放左邊,大於標杆的數字放右邊,一次排完以後再繼續重複前面的操做,直到只有一個數字
3 O(n + max)
基數排序。將整形10進制按每位拆分,而後從低位到高位依次比較各個位。主要分爲兩個過程:
a 分配,先從個位開始,根據位值(0-9)分別放到0~9號桶中(好比53,個位爲3,則放入3號桶中)
b 收集再將放置在0~9號桶中的數據按順序放到數組中
重複a、b的過程,從個位到最高位
博客點擊這裏
假設有數組 array = [1,5,2,3,4,2,3,1,3,4]
你要寫一個函數 unique,使得
unique(array) 的值爲 [1,5,2,3,4]
也就是把重複的值都去掉,只保留不重複的值。
要求:
不要作多重循環,只能遍歷一次
請給出兩種方案,一種能在 ES 5 環境中運行,一種能在 ES 6 環境中運行(提示 ES 6 環境多了一個 Set 對象)
回答
ES5
function unique(array) { var newArr = [] var hash = {} for(var i = 0; i < array.length; i++) { if(hash[array[i]] === undefined) { newArr.push(array[i]) hash[array[i]] = 1 } } return newArr } var array = [1,5,2,3,4,2,3,1,3,4]; unique(array) // [1, 5, 2, 3, 4]
ES6
function unique(array){ return Array.from(new Set(array)); } unique(array) // [1, 5, 2, 3, 4]