① 設計開發一個畫圖工具,功能類似於操作系統自帶的畫圖軟體mspaint,基本要求如下
就算有了這些功能也沒人會用的。如果是想做市場的話。不推薦。如果是想自己用的話,隨便下個平面設計軟體都可以吧。。。
② 前端開發的基本方法
CSS部分
盒子邊傾斜
clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%);
禁止點擊事件/滑鼠事件「穿透」
div * { pointer-events: none; /*鏈接啊,點擊事件啊,都沒有效果了*/ }
用來控制元素在移動設備上使用滾動回彈效果
.main{
-webkit-overflow-scrolling: touch;
}
可解決在IOS中使用overflow:auto 形成的滾動條,滾動不流暢的情況
文字漸變效果
.text-gradient{ background-image: linear-gradient(135deg, deeppink, deepskyblue);
-webkit-background-clip: text; color: transparent;
}
css三角形
#triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red;
}
實現圓弧
clip-path: ellipse(80%60% at50%40%);
JS部分
JavaScript中檢測數組的方法
(1)、typeof操作符
這種方法對一些常用的類型檢查沒有問題,但對array和null 都判斷為object
(2)、instanceof操作符
這個操作符是檢測對象的原型鏈是否指向構造函數的prototype對象的
(3)、對象的constructor屬性
const arr = []
console.log(arr.constructor === Array) // true
(4)、Object.prototype.toString
constarr=[]console.log(Object.prototype.toString.call(arr)==='[objectArray]')//true
(5)、Array.isArray()
常用的字元串操作
字元串轉化toString()
字元串分隔split()
字元串替換replace()
獲取長度length
查詢子字元串 indexOf
返回指定位置的字元串或字元串編碼 charAt charCodeAt
字元串匹配 match
字元串拼接concat
字元串的切割或提取slice() substring() substr()
字元串大小寫轉化 toLowerCase toUpperCase
字元串去空格 trim() 用來刪除字元串前後的空格
- const str = '11122223333'const uniqueStr = [...new Set(str)].join('')
- arr.rece(callback,[initialValue])
- 跳過第一個索引。如果提供initialValue,從索引0開始。
- const arr = [1, 2, 3, 1, 2, 3]const uniqueArr = [...new Set(arr)]
- var a = {};Object.defineProperty(a, 'name', { value : 'kong', enumerable : true //該屬性是否可枚舉})
- function a(){}
- var b = new a();console.log(a.prototype.isPrototypeOf(b));//true
- if (/Android/gi.test(navigator.userAgent)) { window.addEventListener('resize', function () { if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') { window.setTimeout(function () { document.activeElement.scrollIntoViewIfNeeded();
- }, 0);
- }
- });
- };
- /**
- * 向URL追加參數
- * @function stringifyUrlArgs
- * @param {string} url - URL路徑
- * @param {object} params - 參數對象
- * @return {string}
- const stringifyUrlArgs = (url, params) => {
- url += (/?/).test(url) ? '&' : '?'
- url += Object.keys(params).map(key => `${key}=${params[key]}`).join('&') return url
- }
- /**
- * 解析URL參數
- * @function parseUrlArgs
- * @param {string} url - 字元串
- * @return {object}export const parseUrlArgs = url => { const arr = url.match(/([^?=&]+)(=([^&]*))/g) || [] const args = arr.rece((a, v) => {
- a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1) return a
- }, {}) return args
- }
- NP.strip(num) // strip a number to nearest right numberNP.plus(num1, num2, num3, ...) // addition, num + num2 + num3, two numbers is required at least.NP.minus(num1, num2, num3, ...) // subtraction, num1 - num2 - num3NP.times(num1, num2, num3, ...) // multiplication, num1 * num2 * num3NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3NP.round(num, ratio) // round a number based on ratio
其中第9中三者的區別如下:
(1)slice(), 參數可以是負數,負數表示從字元串最後一個位置開始切割到對應結束位置
(2)substring(),參數不可為負數,切割第一個位置到第二個位置的字元串
(3)substr(), 參數可以是負數,第一個參數是開始位置,第二個參數為切割的長度
字元串去重
常用的數組操作
1、Array.map()
此方法是將數組中的每個元素調用一個提供的函數,結果作為一個新的數組返回,並沒有改變原來的數組
2、Array.forEach()
此方法是將數組中的每個元素執行傳進提供的函數,沒有返回值,注意和map方法區分
3、Array.filter()
此方法是將滿足條件的元素作為一個新數組返回
4、Array.every()
此方法將數組所有元素進行判斷返回一個布爾值,如果所有元素都符合判斷條件,則返回true,否則返回false
5、Array.some()
此方法將數組所有元素進行判斷返回一個布爾值,如果有一個元素滿足判斷條件,則返回true,所有元素都不滿足則返回false
6、Array.rece()
此方法為所有元素調用返回函數
7、Array.push()
在數組最後面添加新元素
8、Array.shift()
刪除數組第一個元素
9、Array.pop()
刪除數組最後一個元素
10、Array.unshift()
在數組最前面增加元素
11、Array.isArray()
判斷是否為一個數組
12、Array.concat()
數組拼接
13、Array.toString()
數組轉化為字元串
14、Array.join()
數組轉化為字元串,並用第一個參數作為連接符
15、Array.splice(開始位置,刪除個數,元素)
其中rece使用方法為:
callback (執行數組中每個值的函數,包含四個參數)
1、previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))
2、currentValue (數組中當前被處理的元素)
3、index (當前元素在數組中的索引)
4、array (調用 rece 的數組) initialValue (作為第一次調用 callback 的第一個參數。)
如果沒有提供initialValue,rece 會從索引1的地方開始執行 callback 方法,
數組去重:
常用對象方法
1、Object.assign()
用於克隆,兩個參數,將第二個對象分配到第一個中
2、Object.is()
用於判斷兩個值是否相同
//注意,該函數與==運算符不同,不會強制轉換任何類型, 應該更加類似於===,但值得注意的是它會將+0和-0視作不同值
3、Object.keys()
用於返回對象可枚舉的屬性和方法的名稱,返回一個屬性或方法名稱的字元串數組。
4、Object.defineProperty()
劫持變數的set和get方法,將屬性添加到對象,或修改現有屬性的特性
5、Object.defineProperties()
可添加多個屬性,與Object.defineProperty()對應,
6、isPrototypeOf
安卓監聽可視區域變化,讓輸入框移動至可視區域
vue中平滑滾動到某個位置
this.$refs.rule.scrollIntoView({ block: 'start', behavior: 'smooth' })
向URL追加參數
解析URL參數
好用的JavaSrcipt庫與模塊(包)
日期時間處理庫
1、monent.js
2、day.js
day相對於monent要輕量許多
高精度數學運算
number-precision
實用工具庫
Lodash
lodash 是一個 JavaScript 實用工具庫,提供一致性,及模塊化、性能和配件等功能。
Lodash 消除了處理數組的麻煩,從而簡化了 JavaScript、 數字、對象、字元串等
③ 利用CSS border實現三角形圖標效果及原理解釋
在日常開發中,經常會用到各種形狀的三角形,我們可以通過圖標來實現自己先要的效果,但如何用樣式快速寫出一個適合自己的三角形呢,如果你不太明白請看接下例子。
結果如下:
這樣簡單的4個不同方位的三角形就做好了,其實實現三角形很簡單,為了更直觀的看到三角形實現原理我們來看接下來的例子。
結果如下
從圖上我們可以清晰的看出,當我們給DOM元素設置寬高為0的時候,此時設置邊框,上、下、左、右、將以上圖右中圓心散開往外擴展(圓心標點是方便觀察點的,真實是不存在的),最終形成一個由四個相同三角形組成的,寬度是border寬度2倍的正方向,每一個三角形正是我們設置的不同方位的border邊框。看到這里其實我們想要的三角形效果已經完後,但是還不夠完美,細心的小夥伴可能會有疑問。 為什麼我設置的寬度是20px,但是卻生成了一個寬度為40的正方形 ?那我們就再看一下圖例:
圖100px;
上圖中我們給div設置了寬高,當此的變寬分別變成了一個梯形,在border寬度逐漸縮小的過程中,邊框逐漸趨於直線,直到小到肉眼看不清相鄰邊框拼接處的結合,就成了我們眼中所謂的直線。
反過來亦是如此,讓我們的邊框設置的很寬的時候,相鄰邊框相交部位將按照對角線分別形成兩個三角形,填充變寬(不然相交處出現空白,4個邊框分別外延也就沒有邊框的意義了),
這也就是為什麼我們生成的正方向的寬度是邊框2倍的原因。
提到上面一點還想就是提醒小夥伴們,在平時用css繪制三角形的時候,為了避免多佔空間,我們可以省去對邊邊框的設置。
上圖例子圖像設置除了沒有設置下邊框,其餘的和demo5均相同,我們可看到,箭頭依然完好無損,但圖標實際佔用空間卻節省了一半,所有在平時開發中我們要注意這個 隱藏的小坑 !
好啦,利用css繪制三角形就說到這里,相信小夥伴們早就一目瞭然, 只要把其中的一條邊框的color設置成固定顏色,其他邊框color設置透明 ,就可以畫出自己心儀的三角形了。通過設置寬度的不同,還可以畫出其他不一樣的效果哦,是不是很簡單,趕緊動手試試吧!
④ 前端編程:在頁面繪制三角形
div+css畫三角形代碼原理採用的是均分原理。
在矩形的直角,兩條邊的樣式要均分,比如左上角 border-top 和 border-left 的樣式要均分
如果border-left 無色透明, border-top有色, 就會出來一個45度的銳角。
⑤ 前端實現三角形的三種方法
第一種 HTML+CSS
第二種 通過canvas
第三種 SVG
⑥ MFC 怎麼繪制三角形
首先確定「開發工具」中的「設計模式」為選中狀態「 然後雙擊按鈕,在按鈕的事件過程寫入如下代碼: [A6] = [A1] [B6] = [B1] 然後返回excel界面,取消「設計模式」的選中。
⑦ 想做web前端的工作,應該先學什麼
一個專業的前端開發工程師是必須掌握前端開發三大基本基石HTML、CSS,JavaScript。光會這些還不夠,有了這些語言還需要各種工具的支撐,比較常見的有Dreamweaver,Sublime,HBuilder。還有FontelloFontello、Secureheaders、Visual Studio CodeVisual Studio Code。
工具只能解決一些特定問題,要解決更加全面的問題就要接觸到框架,三大基本框架有Angular、React、Vue,當然,以後還會接觸到更多Bootstrap、Fbootstrapp、BootMetro、Gumby、IVORY、Kube這樣的框架。另外,一個優秀的前端開發工程師可能還要掌握SEO、DOM、BOM、Ajax等技能,甚至,網站性能優化和伺服器端的相關基礎知識也是需要了解的。
學會這些還不夠,前端開發是一門發展的學科,不是學好了就可以停止學習,後面還會接觸到更多新的內容。
由此可見,要想學好前端,絕對不簡單,前端開發的廣度和深度是其他行業所不能比擬的,你必須付出不懈的努力,才能收獲這份果實。
⑧ excel單元格設置問題,單元格中出現連個上、下三角形,可以點擊三角形選擇不同的內容
2003版:
1、建立姓名表,比如在SHEET2的A列;
2、視圖——工具欄——窗體,在調出的窗體中用滑鼠點中「微調」,然後將滑鼠移至需要的單元格,按住左鍵拖拉,形成該按鈕,在按鈕上點滑鼠右鍵——設置控制項格式——控制,最小值輸入1,最大值輸入人數,步長為1,單元格鏈接輸入一任意空白單元格,比如SHEET2的A10000;
3、在姓名單元格下輸入公式=indirect("sheet2!a"&sheet2!a10000)
⑨ 2022前端開發面試記錄(深圳篇)
2022年來到深圳,感覺到了與之前所在城市的差異,心裡多少有點落差。雖然時機不太對吧,但是相信一切都會好起來的,給自己加油呀!
整理了一些面試被問到的問題,雖然很多是無效面試,但是我也強行問了面試官,從他們的回答中猜測了一下他們關注的面試點,所以也算是有點收獲吧,只是浪費了很多簡歷和路費,哭唧唧。
——1、區塊鏈——
1-1、vue生命周期;
1-2、vuex屬性;
1-3、用戶開始登錄到登錄成功都發生了什麼;
1-4、git常用的命令;
——2、金融:vue——
筆試:
2-1、深淺拷貝的區別,為什麼會出現深淺拷貝,淺拷貝的優勢;
2-2、強制中斷 foreach 遍歷;
2-3、多處組件復用;
2-4、你對前端是什麼概念,前端在整個軟體生態內是什麼角色;
2-5、Vue2 中數據變化但視圖沒有發生同步更新,描述一下出現的場景,解決方式,以及該問題發生的可能原因;
2-6、nextTick 是如何確保開發者能夠獲取到最新的 DOM 狀態的;
2-7、如何使用 mixins,有何利弊;
2-8、使用 Hooks 模式開發時,useMemo,useCallback 常用來作為優化的手段。描述一下它們各自的適用場景,以及背後的原理實現?;
2-9、前端從 Jquery 時代演變至如今的三大框架,這種演變的根源是什麼,jquery 解決了什麼問題,如今的三大框架又是為了解決什麼問題出現的?
視頻面試:
2-10、js遍歷樹形結構,每個節點都有一個唯一ID,只能遍歷一次;
2-11、組件封裝的意義;
——3、知識產權:vue2、vue3、ts、react——
3-1、說一說面向對象的理解,包括繼承、封裝、多態等;
3-2、說一說promise;
3-3、webpack優化;
3-4、vuex使用場景;
3-5、描述一下對vue響應式原理的理解;
3-6、vue生命周期;
3-7、父子組件鉤子函數執行順序;
3-8、v-if和v-show;
3-9、js數據類型;
3-10、實現深拷貝;
——4、物流——
4-1、vue生命周期;
4-2、生命周期-修改元素樣式在生命周期的哪個階段;
4-3、生命周期-修改數據在哪個階段;
4-4、生命周期-destroy裡面會做哪些操作;
4-5、怎麼修改title的內容;
4-6、父子組件傳參的具體寫法;
4-7、v-model的多種寫法;
4-8、js數據類型;
4-9、判斷數組的方法;
4-10、實現左邊固定右邊自適應的布局;
4-11、實現div垂直水平居中;
4-12、flex:1;
4-13、flex詳解;
4-14、call,apply,bind是干什麼的;
——5、新興產業——
5-1、封裝路由,怎麼攔截路由;
5-2、瀏覽器緩存有哪些,又問localStorage和sessionStrorage的區別和應用場景;
5-3、瀏覽器強緩存和協商緩存;
5-4、webpack打包機制,構建過程和配置;
5-5、性能優化方法;
5-6、前端的業務和後端的API是怎麼做到數據實時請求的(問的其實是前端對後端API介面的封裝和管理);
5-7、computed和watch;
5-8、說了幾個關於大屏的應用場景,有沒有做過,怎麼做的;
——6、某水果:vue2、vue3、ts、各種前沿技術都用——
6-1、怎麼封裝一個組件庫/工具類庫,比如vue封裝過什麼復雜組件,jquery封裝過什麼類庫;
6-2、get和post的區別,傳參格式等;
6-3、promise怎麼用的;
6-4、原型鏈,test()的原型鏈;
6-5、websocket;
6-6、es6中的generator;
6-7、es6中的set和map有啥區別,set為什麼能去重;
6-8、項目難點;
——7、醫療健康:vue——
7-1、vue自定義指令配置;
7-2、webpack的理解;
7-3、對node的了解,用過express嗎;
7-4、項目中的拖拽是怎麼做的;
7-5、websocket和socket的區別;
7-6、聽過mqtt嗎,因為沒聽過所以解釋了一下activemq的用法;
7-7、二維地圖的聚合,如果有十萬個點,會做什麼優化;
7-8、地圖實現多個點連成一條線會怎麼做;
7-9、地圖實現一條曲線;
7-10、內網下git怎麼用的;
7-11、openlayers渲染機制;
7-12、父子組件通信方法;
7-13、router中實現攔截;
7-14、對象合並的方法;
7-15、父子組件的生命周期執行順序,渲染階段為什麼會先執行父組件再執行子組件;
7-16、vue生命周期;
7-17、npm run dev, run build可以在項目中的什麼位置找到;
7-18、vue中跳轉頁面的方法;
7-19、mixins用過嗎;
7-20、判斷引用類型的方法;
7-21、js數據類型;
7-22、判斷基本數據類型的方法;
7-23、for in和for of的用法和區別,兩者遍歷的是索引還是屬性值,兩者都可以遍歷對象嗎;
7-24、foreach和map的區別,兩者會不會改變原數組;
7-25、主要用什麼技術棧;
7-26、行內元素和塊級元素的區別,分別都有哪些,行塊級元素有哪些;
7-27、div垂直水平居中,grid知不知道怎麼用;
7-28、splice和slice;
——8、智慧園區:vue2、vue3、ts、uniapp——
8-1、flex了解嗎,flex布局方向,flex:1 0的頁面效果是怎樣的;
8-2、做過移動端嗎,了解uniapp嗎;
8-3、keep-alive;問了一個沒聽明白的,可能和keep-alive有關系;
8-4、vuex中的action;不用vuex,怎麼代替vuex;
8-5、promise.all和promise.on;
8-6、防止表單重復提交;
8-7、async,await的使用;
8-8、vue3和ts的了解;
8-9、防抖怎麼控制時間;
8-10、vue中的data為什麼要設計成一個函數;
——9、智慧工地:vue、uniapp、小程序——
9-1、Vuex是干什麼的;
9-2、openlayers怎麼用的;
9-3、性能優化;
9-4、spa首屏載入優化;
9-5、bundler.js太大,打包怎麼優化;
9-6、加密方式了解多少,比如md5,base64等,一大堆沒聽過的;
9-7、冒泡排序的實現原理;
9-8、js設計模式;
——10、某快遞公司外包——
10-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
10-2、項目相關的,聊天怎麼做的,拖拽怎麼做的,拖拽的數據怎麼渲染的,拖拽重疊怎麼處理的;
10-3、js設計模式;
——11、三維:vue、cesium——
11-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
11-2、openlayers怎麼用的,發布過wms嗎,發布流程是怎樣的;
11-3、openlayers轉換經緯度的方法名是什麼;
11-4、cesium常用的函數;
11-5、vue數據雙向綁定原理;
11-6、Vue中data屬性如果改變一個數組的下標,會不會馬上發生變化,不變化可以怎麼解決
11-7、數組常用方法有哪些;
11-8、 map和filter的區別;
11-9、es6常用的方法;
11-10、父子組件通信,兄弟組件通信;
11-11、new具體進行了什麼操作;
——12、醫療:vue、angular——
12-1、js渲染機制和運行機制;
12-2、vue數據綁定原理;
——13、建設行業:vue、uniapp——
筆試:
13-1、||與&運算符;
13-2、垂直居中方案;
13-3、let a=arr, b=a, c=arr.concat(), a[0]=3,列印b和c,應該是深淺拷貝;
13-4、實現font-size:12;
13-5、介面路徑,給一個地址 http://localhost/projectname/resource/index(http://localhost/projectname/resource/index).html ,根據url請求介面路徑寫出完整路徑,』/ geturl.do 』,』 geturl.do 』,』../ geturl.do 』;
13-6、微信小程序流程和主要文件;
13-7、獲取url參數及內容;
13-8、$(function(){}) / (function(){}) / (function(){})()的區別;
13-9、前端優化方案;
面試:
13-10、項目難點;
13-11、git工作流;
13-12、jquery項目會不會用webpack打包;
13-13、webpack優化;
13-14、web優化;
——14、文化:uniapp——
14-1、ssr渲染;
14-2、ajax和axios的區別;
14-3、cookie和session的區別;
14-4、vue生命周期;
14-5、數據請求寫在哪個生命周期中;
14-6、router的history模式和hash模式;
14-7、工作中的開發流程;
14-8、uniapp的開發流程和坑;
14-9、uniapp滑動問題,下滑切換視頻不生效,一般是什麼原因;
14-10、uniapp載入速度慢,點擊載入圖片速度太慢,一般是什麼原因;
——15、企業平台某外包:vue,node,性能優化——
15-1、說一說websocket;
15-2、vue數據雙向綁定原理;
15-3、項目難點;
15-4、對mvvm、mvc、mvp等的理解;
15-5、vue的常見指令;
15-6、computed和watch;
15-7、class和style怎麼綁定;
15-8、ajax和axios的區別;
15-9、axios攔截器,axios的post請求;
15-10、對前端渲染,服務端渲染的理解;
——16、智慧城市:vue,node,three.js——
16-1、vue生命周期;
16-2、vue組件通信方法;
16-3、js的繼承;
16-4、oracle、mysql、sqllite的區別;
16-5、oracle連表查詢;
16-6、openlayers項目場景;
16-7、cesium項目場景;
——17、租房:jquery+layui,vue2——
17-1、筆試:
17-2、foo列印題;
17-3、this列印題;
17-4、變數提升列印題;
17-5、let arr=[1,2,[5,8,[9,[3,5,]7,]20,37]] 把數組扁平化成一個數組,並進行去重升序;
17-6、let a=[1,2,3,4,5,6,7]; let b=[4,5,6]; 求b在a中第一次出現的位置;
17-7、面試:主要問項目
——18、跑腿:vue2,vue3+ts——
18-1、對html5語義化的理解;
18-2、css實現一個三角形;
18-3、css怎麼實現0.5px的線,為什麼有這種需求,涉及到兼容性問題;
18-4、怎麼解決變數提升的問題;
18-5、es6新增了哪些定義變數的方式;
18-6、const定義的變數可以被修改嗎;
18-7、map和filter的區別,會改變原數組嗎;
18-8、es6去重的方法;
18-9、談一談對promise的理解;
18-10、除了鏈式調用,promise還可以怎麼處理同步請求(async/await);
18-11、對vue響應式原理的理解,核心是什麼;
18-12、對vue生命周期每個階段的理解;
18-13、為什麼要用key,key有什麼作用;
18-14、v-if和v-show;
18-15、Vue中data為什麼是一個函數;
18-16、vue各場景下的傳值方式有哪些,比如父子組件,兄弟組件,祖孫組件;
18-17、對vuex的理解和使用場景;
18-18、vue常見修飾符;
18-19、Vue3用過嗎(因為沒用過,所以就只針對響應式原理說了一下vue3和vue2的區別);
——19、實業:jquery,vue2,vue3——
筆試:需要解釋
19-1、html5新標簽,css3新特性;
19-2、js+css3實現某元素以50px每秒的速度左移100px;
19-3、css實現左中右布局,不改變文檔流;
19-4、js兼容性有哪些,以及常見的解決方案;
19-5、描述一下事件循環機制eventloop,eventloop解決了什麼問題;
19-6、給了一個題,大概是後端返回的介面數據,data的格式有很多,比如null,對象,數組,字元串等,怎麼處理這種問題;
19-7、前端性能優化方法,首屏頁面怎麼優化;
19-8、用js寫一個方法實現數據去重並排序(用es5和es6+實現);
19-9、給定一個數組,把數組中為0的往後排,其他值按順序排序; (示例:[1,0,4,0,5,3]轉換結果為[1,3,4,5,0,0])
19-10、用0,1,2代表紅黃藍三種顏色,實現以下排序,不能用array.sort實現;(示例:[0,1,0,2,0,1,2]轉換結果為[0,0,0,1,1,2,2])
面試:
19-11、flex布局;flex:1對應的屬性;
19-12、講一下原型鏈; proto 和prototype有什麼區別;字元串有沒有原型;給定一個str,str.test()調用的誰的test方法;
19-13、講一下閉包;什麼情況下才能算是閉包;形成閉包的條件;列了三個題讓你判斷是不是閉包;
19-14、v-if和v-show是干什麼的;應用場景有哪些;給定一對父子組件,默認值是false,另外有一個ajax請求,值發生了以下變化(false true false true true),在v-show和v-if中,父子組件的哪個階段里會請求ajax;
19-15、computed的實現原理,怎麼實現一個computed;
19-16、css中,transform,margin,position的都是怎麼渲染的,渲染機制是什麼;amd,cmd,commonjs了解嗎;
⑩ Web前端崗位面試題有哪些
前端面試題匯總,多餘的就不說先做會這些東西吧
HTML
Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
HTML5 為什麼只需要寫 <!DOCTYPE HTML>?
行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
頁面導入樣式時,使用link和@import有什麼區別?
介紹一下你對瀏覽器內核的理解?
常見的瀏覽器內核有哪些?
html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?
簡述一下你對HTML語義化的理解?
HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?
請描述一下 cookies,sessionStorage 和 localStorage 的區別?
iframe有那些缺點?
Label的作用是什麼?是怎麼用的?(加 for 或 包裹)
HTML5的form如何關閉自動完成功能?
如何實現瀏覽器內多個標簽頁之間的通信? (阿里)
webSocket如何兼容低瀏覽器?(阿里)
頁面可見性(Page Visibility)API 可以有哪些用途?
如何在頁面上實現一個圓形的可點擊區域?
實現不使用 border 畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。
網頁驗證碼是幹嘛的,是為了解決什麼安全問題?
tite與h1的區別、b與strong的區別、i與em的區別?
css
介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
CSS選擇符有哪些?哪些屬性可以繼承?
CSS優先順序演算法如何計算?
CSS3新增偽類有那些?
如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
display有哪些值?說明他們的作用。
position的值relative和absolute定位原點是?
CSS3有哪些新特性?
請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
用純CSS創建一個三角形的原理是什麼?
一個滿屏 品 字布局 如何設計?
常見兼容性問題?
li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?
經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧 ?
為什麼要初始化CSS樣式。
absolute的containing block計算方式跟正常流有什麼不同?
CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?
position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?
對BFC規范(塊級格式化上下文:block formatting context)的理解?
CSS權重優先順序是如何計算的?
請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式
移動端的布局用過媒體查詢嗎?
使用 CSS 預處理器嗎?喜歡那個?
CSS優化、提高性能的方法有哪些?
瀏覽器是怎樣解析CSS選擇器的?
在網頁中的應該使用奇數還是偶數的字體?為什麼呢?
margin和padding分別適合什麼場景使用?
抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]
元素豎向的百分比設定是相對於容器的高度嗎?
全屏滾動的原理是什麼?用到了CSS的那些屬性?
什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?
視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)
::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。
如何修改chrome記住密碼後自動填充表單的黃色背景 ?
你對line-height是如何理解的?
設置元素浮動後,該元素的display值是多少?(自動變成display:block)
怎麼讓Chrome支持小於12px 的文字?
讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing: antialiased;)
font-style屬性可以讓它賦值為「oblique」 oblique是什麼意思?
position:fixed;在android下無效怎麼處理?
如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)
display:inline-block 什麼時候會顯示間隙?(攜程)
overflow: scroll時不能平滑滾動的問題怎麼處理?
有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。
png、jpg、gif 這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?
什麼是Cookie 隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)
style標簽寫在body後與body前有什麼區別?
JavaScript
介紹JavaScript的基本數據類型。
說說寫JavaScript的基本規范?
JavaScript原型,原型鏈 ? 有什麼特點?
JavaScript有幾種類型的值?(堆:原始數據類型和 棧:引用數據類型),你能畫一下他們的內存圖嗎?
Javascript如何實現繼承?
Javascript創建對象的幾種方式?
Javascript作用鏈域?
談談This對象的理解。
eval是做什麼的?
什麼是window對象? 什麼是document對象?
null,undefined的區別?
寫一個通用的事件偵聽器函數(機試題)。
[「1」, 「2」, 「3」].map(parseInt) 答案是多少?
關於事件,IE與火狐的事件機制有什麼區別? 如何阻止冒泡?
什麼是閉包(closure),為什麼要用它?
javascript 代碼中的」use strict」;是什麼意思 ? 使用它區別是什麼?
如何判斷一個對象是否屬於某個類?
new操作符具體幹了什麼呢?
用原生JavaScript的實現過什麼功能嗎?
Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
對JSON的了解?
[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解釋一下這段代碼的意思嗎?
js延遲載入的方式有哪些?
Ajax 是什麼? 如何創建一個Ajax?
同步和非同步的區別?
如何解決跨域問題?
頁面編碼和被請求的資源編碼如果不一致如何處理?
模塊化開發怎麼做?
AMD(Moles/Asynchronous-Definition)、CMD(Common Mole Definition)規范區別?
requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何 緩存的?)
讓你自己設計實現一個requireJS,你會怎麼做?
談一談你對ECMAScript6的了解?
ECMAScript6 怎麼寫class么,為什麼會出現class這種東西?
非同步載入的方式有哪些?
documen.write和 innerHTML的區別?
DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?
.call() 和 .apply() 的含義和區別?
數組和對象有哪些原生方法,列舉一下?
JS 怎麼實現一個類。怎麼實例化這個類
JavaScript中的作用域與變數聲明提升?
如何編寫高性能的Javascript?
那些操作會造成內存泄漏?
JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?
jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?
jquery中如何將數組轉化為json字元串,然後再轉化回來?
jQuery 的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?
jquery.extend 與 jquery.fn.extend的區別?
jQuery 的隊列是如何實現的?隊列可以用在哪些地方?
談一下Jquery中的bind(),live(),delegate(),on()的區別?
JQuery一個對象可以同時綁定多個事件,這是如何實現的?
是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?
jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)
針對 jQuery性能的優化方法?
Jquery與jQuery UI有啥區別?
JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?
jquery 中如何將數組轉化為json字元串,然後再轉化回來?
jQuery和Zepto的區別?各自的使用場景?
針對 jQuery 的優化方法?
Zepto的點透問題如何解決?
jQueryUI如何自定義組件?
需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?
如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)
移動端最小觸控區域是多大?
jQuery 的 slideUp動畫 ,如果目標元素是被外部事件驅動, 當滑鼠快速地連續觸發外部元素事件, 動畫會滯後的反復執行,該如何處理呢?
把 Script 標簽 放在頁面的最底部的body封閉之前 和封閉之後有什麼區別?瀏覽器會如何解析它們?
移動端的點擊事件的有延遲,時間是多久,為什麼會有? 怎麼解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)
知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能講出他們各自的優點和缺點么?
Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?
解釋JavaScript中的作用域與變數聲明提升?
那些操作會造成內存泄漏?
JQuery一個對象可以同時綁定多個事件,這是如何實現的?
Node.js的適用場景?
(如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
解釋一下 Backbone 的 MVC 實現方式?
什麼是「前端路由」?什麼時候適合使用「前端路由」? 「前端路由」有哪些優點和缺點?
知道什麼是webkit么? 知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎麼測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?
前端templating(Mustache, underscore, handlebars)是幹嘛的, 怎麼用?
簡述一下 Handlebars 的基本用法?
簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?
用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)
檢測瀏覽器版本版本有哪些方式?
我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲
其他問題
原來公司工作流程是怎麼樣的,如何與其他人協作的?如何誇部門合作的?
你遇到過比較難的技術問題是?你是如何解決的?
設計模式 知道什麼是singleton, factory, strategy, decrator么?
常使用的庫有哪些?常用的前端開發工具?開發過什麼應用或組件?
頁面重構怎麼操作?
列舉IE與其他瀏覽器不一樣的特性?
99%的網站都需要被重構是那本書上寫的?
什麼叫優雅降級和漸進增強?
是否了解公鑰加密和私鑰加密。
WEB應用從伺服器主動推送Data到客戶端有那些方式?
對Node的優點和缺點提出了自己的看法?
你有用過哪些前端性能優化的方法?
http狀態碼有那些?分別代表是什麼意思?
一個頁面從輸入 URL 到頁面載入顯示完成,這個過程中都發生了什麼?(流程說的越詳細越好)
部分地區用戶反應網站很卡,請問有哪些可能性的原因,以及解決方法?
從打開app到刷新出內容,整個過程中都發生了什麼,如果感覺慢,怎麼定位問題,怎麼解決?
除了前端以外還了解什麼其它技術么?你最最厲害的技能是什麼?
你用的得心應手用的熟練地編輯器&開發環境是什麼樣子?
對前端界面工程師這個職位是怎麼樣理解的?它的前景會怎麼樣?
你怎麼看待Web App 、hybrid App、Native App?
你移動端前端開發的理解?(和 Web 前端開發的主要區別是什麼?)
你對加班的看法?
平時如何管理你的項目?
說說最近最流行的一些東西吧?常去哪些網站?
如何設計突發大規模並發架構?
說說最近最流行的一些東西吧?常去哪些網站?
是否了解開源的工具 bower、npm、yeoman、grunt、gulp,一個 npm 的包里的 package.json 具備的必要的欄位都有哪些?(名稱、版本號,依賴)
每個模塊的代碼結構都應該比較簡單,且每個模塊之間的關系也應該非常清晰,隨著功能和迭代次數越來越多,你會如何去保持這個狀態的?
Git知道branch, diff, merge么?
如何設計突發大規模並發架構?
當團隊人手不足,把功能代碼寫完已經需要加班的情況下,你會做前端代碼的測試嗎?
說說最近最流行的一些東西吧?平時常去哪些網站?
知道什麼是SEO並且怎麼優化么? 知道各種meta data的含義么?
移動端(Android IOS)怎麼做好用戶體驗?
簡單描述一下你做過的移動APP項目研發流程?
你在現在的團隊處於什麼樣的角色,起到了什麼明顯的作用?
你認為怎樣才是全端工程師(Full Stack developer)?
介紹一個你最得意的作品吧?
你有自己的技術博客嗎,用了哪些技術?
對前端安全有什麼看法?
是否了解Web注入攻擊,說下原理,最常見的兩種攻擊(XSS 和 CSRF)了解到什麼程度?
項目中遇到國哪些印象深刻的技術難題,具體是什麼問題,怎麼解決?。
最近在學什麼東西?
你的優點是什麼?缺點是什麼?
如何管理前端團隊?
最近在學什麼?能談談你未來3,5年給自己的規劃嗎?