日韩欧美另类久久久精品_亚洲大色堂人在线无码_国产三级aⅴ在线播放_在线无码aⅴ精品动漫_国产精品精品国产专区

我要投稿 投訴建議

web前端面試題及答案

時(shí)間:2021-02-19 11:00:48 面試試題 我要投稿

web前端面試題及答案

  一些面試中經(jīng)常會(huì)遇到的經(jīng)典面試題以及自己面試過(guò)程中無(wú)法解決的問(wèn)題,如下是中國(guó)人才網(wǎng)給大家整理的,希望對(duì)大家有所作用。

web前端面試題及答案

  web前端面試題及答案

  HTML/CSS部分

  1、什么是盒子模型?

  在網(wǎng)頁(yè)中,一個(gè)元素占有空間的大小由幾個(gè)部分構(gòu)成,其中包括元素的內(nèi)容(content),元素的內(nèi)邊距(padding),元素的邊框(border),元素的外邊距(margin)四個(gè)部分。這四個(gè)部分占有的空間中,有的部分可以顯示相應(yīng)的內(nèi)容,而有的部分只用來(lái)分隔相鄰的區(qū)域或區(qū)域。4個(gè)部分一起構(gòu)成了css中元素的盒模型。

  2、行內(nèi)元素有哪些?塊級(jí)元素有哪些? 空(void)元素有那些?

  行內(nèi)元素:a、b、span、img、input、strong、select、label、em、button、textarea

  塊級(jí)元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote

  空元素:即系沒(méi)有內(nèi)容的HTML元素,例如:br、meta、hr、link、input、img

  3、CSS實(shí)現(xiàn)垂直水平居中

  一道經(jīng)典的問(wèn)題,實(shí)現(xiàn)方法有很多種,以下是其中一種實(shí)現(xiàn):

  HTML結(jié)構(gòu):

  CSS:

  .wrapper{position:relative;}

  .content{

  background-color:#6699FF;

  width:200px;

  height:200px;

  position: absolute; //父元素需要相對(duì)定位

  top: 50%;

  left: 50%;

  margin-top:-100px ; //二分之一的height,width

  margin-left: -100px;

  }

  4、簡(jiǎn)述一下src與href的區(qū)別

  href 是指向網(wǎng)絡(luò)資源所在位置,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(鏈接)之間的鏈接,用于超鏈接。

  src是指向外部資源的位置,指向的內(nèi)容將會(huì)嵌入到文檔中當(dāng)前標(biāo)簽所在位置;在請(qǐng)求src資源時(shí)會(huì)將其指向的資源下載并應(yīng)用到文檔內(nèi),例如js腳本,img圖片和frame等元素。當(dāng)瀏覽器解析到該元素時(shí),會(huì)暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢,圖片和框架等元素也如此,類(lèi)似于將所指向資源嵌入當(dāng)前標(biāo)簽內(nèi)。這也是為什么將js腳本放在底部而不是頭部。

  5、什么是CSS Hack?

  一般來(lái)說(shuō)是針對(duì)不同的瀏覽器寫(xiě)不同的CSS,就是 CSS Hack。

  IE瀏覽器Hack一般又分為三種,條件Hack、屬性級(jí)Hack、選擇符Hack(詳細(xì)參考CSS文檔:css文檔)。例如:

  // 1、條件Hack

  // 2、屬性Hack

  .test{

  color:#090\9; /* For IE8+ */

  *color:#f00; /* For IE7 and earlier */

  _color:#ff0; /* For IE6 and earlier */

  }

  // 3、選擇符Hack

  * html .test{color:#090;} /* For IE6 and earlier */

  * + html .test{color:#ff0;} /* For IE7 */

  6、簡(jiǎn)述同步和異步的區(qū)別

  同步是阻塞模式,異步是非阻塞模式。

  同步就是指一個(gè)進(jìn)程在執(zhí)行某個(gè)請(qǐng)求的時(shí)候,若該請(qǐng)求需要一段時(shí)間才能返回信息,那么這個(gè)進(jìn)程將會(huì)一直等待下去,直到收到返回信息才繼續(xù)執(zhí)行下去;

  異步是指進(jìn)程不需要一直等下去,而是繼續(xù)執(zhí)行下面的操作,不管其他進(jìn)程的狀態(tài)。當(dāng)有消息返回時(shí)系統(tǒng)會(huì)通知進(jìn)程進(jìn)行處理,這樣可以提高執(zhí)行的效率。

  7、px和em的區(qū)別

  px和em都是長(zhǎng)度單位,區(qū)別是,px的值是固定的,指定是多少就是多少,計(jì)算比較容易。em得值不是固定的,并且em會(huì)繼承父級(jí)元素的字體大小。

  瀏覽器的默認(rèn)字體高都是16px。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em

  8、什么叫優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)?

  漸進(jìn)增強(qiáng) progressive enhancement:

  針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面,保證最基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶(hù)體驗(yàn)。

  優(yōu)雅降級(jí) graceful degradation:

  一開(kāi)始就構(gòu)建完整的功能,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

  區(qū)別:

  a. 優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開(kāi)始,并試圖減少用戶(hù)體驗(yàn)的供給

  b. 漸進(jìn)增強(qiáng)則是從一個(gè)非;A(chǔ)的,能夠起作用的版本開(kāi)始,并不斷擴(kuò)充,以適應(yīng)未來(lái)環(huán)境的需要

  c. 降級(jí)(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶

  9、瀏覽器的內(nèi)核分別是什么?

  IE: trident內(nèi)核

  Firefox:gecko內(nèi)核

  Safari:webkit內(nèi)核

  Opera:以前是presto內(nèi)核,Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核

  Chrome:Blink(基于webkit,Google與Opera Software共同開(kāi)發(fā))

  JavaScript部分

  1、怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)?

  1)創(chuàng)建新節(jié)點(diǎn)

  createDocumentFragment() //創(chuàng)建一個(gè)DOM片段

  createElement() //創(chuàng)建一個(gè)具體的元素

  createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)

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

  appendChild() //添加

  removeChild() //移除

  replaceChild() //替換

  insertBefore() //插入

  3)查找

  getElementsByTagName() //通過(guò)標(biāo)簽名稱(chēng)

  getElementsByName() //通過(guò)元素的Name屬性的值

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

  2、實(shí)現(xiàn)一個(gè)函數(shù)clone,可以對(duì)JavaScript中的5種主要的數(shù)據(jù)類(lèi)型(包括Number、String、Object、Array、Boolean)進(jìn)行值復(fù)制。

  /**

  * 對(duì)象克隆

  * 支持基本數(shù)據(jù)類(lèi)型及對(duì)象

  * 遞歸方法

  */

  function clone(obj) {

  var o;

  switch (typeof obj) {

  case "undefined":

  break;

  case "string":

  o = obj + "";

  break;

  case "number":

  o = obj - 0;

  break;

  case "boolean":

  o = obj;

  break;

  case "object": // object 分為兩種情況 對(duì)象(Object)或數(shù)組(Array)

  if (obj === null) {

  o = null;

  } else {

  if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {

  o = [];

  for (var i = 0; i < obj.length; i++) {

  o.push(clone(obj[i]));

  }

  } else {

  o = {};

  for (var k in obj) {

  o[k] = clone(obj[k]);

  }

  }

  }

  break;

  default:

  o = obj;

  break;

  }

  return o;

  }

  3、如何消除一個(gè)數(shù)組里面重復(fù)的元素?

  // 方法一:

  var arr1 =[1,2,2,2,3,3,3,4,5,6],

  arr2 = [];

  for(var i = 0,len = arr1.length; i< len; i++){

  if(arr2.indexOf(arr1[i]) < 0){

  arr2.push(arr1[i]);

  }

  }

  document.write(arr2); // 1,2,3,4,5,6

  4、想實(shí)現(xiàn)一個(gè)對(duì)頁(yè)面某個(gè)節(jié)點(diǎn)的拖曳?如何做?(使用原生JS)。

  5、在Javascript中什么是偽數(shù)組?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組?

  偽數(shù)組(類(lèi)數(shù)組):無(wú)法直接調(diào)用數(shù)組方法或期望length屬性有什么特殊的行為,但仍可以對(duì)真正數(shù)組遍歷方法來(lái)遍歷它們。典型的是函數(shù)的argument參數(shù),還有像調(diào)用getElementsByTagName,document.childNodes之類(lèi)的,它們都返回NodeList對(duì)象都屬于偽數(shù)組。可以使用Array.prototype.slice.call(fakeArray)將數(shù)組轉(zhuǎn)化為真正的Array對(duì)象。

  function log(){

  var args = Array.prototype.slice.call(arguments);

  //為了使用unshift數(shù)組方法,將argument轉(zhuǎn)化為真正的數(shù)組

  args.unshift('(app)');

  console.log.apply(console, args);

  };

  6、Javascript中callee和caller的作用?

  caller是返回一個(gè)對(duì)函數(shù)的引用,該函數(shù)調(diào)用了當(dāng)前函數(shù);

  callee是返回正在被執(zhí)行的function函數(shù),也就是所指定的function對(duì)象的正文。

  7、請(qǐng)描述一下cookies,sessionStorage和localStorage的區(qū)別

  sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁(yè)面才能訪問(wèn)并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷(xiāo)毀。因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)。而localStorage用于持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的。

  web storage和cookie的區(qū)別

  Web Storage的概念和cookie相似,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie的大小是受限的,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域,不可以跨域調(diào)用。

  除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開(kāi)發(fā)者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生。

  8、手寫(xiě)數(shù)組快速排序

  關(guān)于快排算法的詳細(xì)說(shuō)明,可以參考阮一峰老師的文章快速排序

  “快速排序”的思想很簡(jiǎn)單,整個(gè)排序過(guò)程只需要三步:

  (1)在數(shù)據(jù)集之中,選擇一個(gè)元素作為”基準(zhǔn)”(pivot)。

  (2)所有小于”基準(zhǔn)”的元素,都移到”基準(zhǔn)”的左邊;所有大于”基準(zhǔn)”的元素,都移到”基準(zhǔn)”的`右邊。

  (3)對(duì)”基準(zhǔn)”左邊和右邊的兩個(gè)子集,不斷重復(fù)第一步和第二步,直到所有子集只剩下一個(gè)元素為止。

  9、統(tǒng)計(jì)字符串”aaaabbbccccddfgh”中字母?jìng)(gè)數(shù)或統(tǒng)計(jì)最多字母數(shù)。

  var str = "aaaabbbccccddfgh";

  var obj = {};

  for(var i=0;i

  var v = str.charAt(i);

  if(obj[v] && obj[v].value == v){

  obj[v].count = ++ obj[v].count;

  }else{

  obj[v] = {};

  obj[v].count = 1;

  obj[v].value = v;

  }

  }

  for(key in obj){

  document.write(obj[key].value +'='+obj[key].count+' '); // a=4 b=3 c=4 d=2 f=1 g=1 h=1

  }

  10、寫(xiě)一個(gè)function,清除字符串前后的空格。(兼容所有瀏覽器)

  function trim(str) {

  if (str && typeof str === "string") {

  return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符

  }

  }

  面試官愛(ài)問(wèn)的問(wèn)題

  01、原來(lái)公司工作流程是怎么樣的,如何與其他人協(xié)作的?如何夸部門(mén)合作的?

  02、你遇到過(guò)比較難的技術(shù)問(wèn)題是?你是如何解決的?

  03、設(shè)計(jì)模式 知道什么是singleton, factory, strategy, decrator么?

  04、常使用的庫(kù)有哪些?常用的前端開(kāi)發(fā)工具?開(kāi)發(fā)過(guò)什么應(yīng)用或組件?

  05、頁(yè)面重構(gòu)怎么操作?

  06、列舉IE與其他瀏覽器不一樣的特性?

  07、99%的網(wǎng)站都需要被重構(gòu)是那本書(shū)上寫(xiě)的?

  08、什么叫優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)?

  09、是否了解公鑰加密和私鑰加密。

  10、WEB應(yīng)用從服務(wù)器主動(dòng)推送Data到客戶(hù)端有那些方式?

  11、對(duì)Node的優(yōu)點(diǎn)和缺點(diǎn)提出了自己的看法?

  12、你有用過(guò)哪些前端性能優(yōu)化的方法?

  13、http狀態(tài)碼有那些?分別代表是什么意思?

  14、一個(gè)頁(yè)面從輸入 URL 到頁(yè)面加載顯示完成,這個(gè)過(guò)程中都發(fā)生了什么?(流程說(shuō)的越詳細(xì)越好)

  15、部分地區(qū)用戶(hù)反應(yīng)網(wǎng)站很卡,請(qǐng)問(wèn)有哪些可能性的原因,以及解決方法?

  16、從打開(kāi)app到刷新出內(nèi)容,整個(gè)過(guò)程中都發(fā)生了什么,如果感覺(jué)慢,怎么定位問(wèn)題,怎么解決?

  17、除了前端以外還了解什么其它技術(shù)么?你最最厲害的技能是什么?

  18、你用的得心應(yīng)手用的熟練地編輯器&開(kāi)發(fā)環(huán)境是什么樣子?

  19、對(duì)前端界面工程師這個(gè)職位是怎么樣理解的?它的前景會(huì)怎么樣?

  20、你怎么看待Web App 、hybrid App、Native App?

  21、你移動(dòng)端前端開(kāi)發(fā)的理解?(和 Web 前端開(kāi)發(fā)的主要區(qū)別是什么?)

  22、你對(duì)加班的看法?

  23、平時(shí)如何管理你的項(xiàng)目?

  24、說(shuō)說(shuō)最近最流行的一些東西吧?常去哪些網(wǎng)站?

  25、如何設(shè)計(jì)突發(fā)大規(guī)模并發(fā)架構(gòu)?

  26、是否了解開(kāi)源的工具 bower、npm、yeoman、grunt、gulp,一個(gè) npm 的包里的

  package.json 具備的必要的字段都有哪些?(名稱(chēng)、版本號(hào),依賴(lài))

  每個(gè)模塊的代碼結(jié)構(gòu)都應(yīng)該比較簡(jiǎn)單,且每個(gè)模塊之間的關(guān)系也應(yīng)該非常清晰,隨著功能和迭代

  次數(shù)越來(lái)越多,你會(huì)如何去保持這個(gè)狀態(tài)的?

  27、Git知道branch, diff, merge么?如何設(shè)計(jì)突發(fā)大規(guī)模并發(fā)架構(gòu)?

  28、當(dāng)團(tuán)隊(duì)人手不足,把功能代碼寫(xiě)完已經(jīng)需要加班的情況下,你會(huì)做前端代碼的測(cè)試嗎?

  29、知道什么是SEO并且怎么優(yōu)化么? 知道各種meta data的含義么?

  30、移動(dòng)端(Android IOS)怎么做好用戶(hù)體驗(yàn)?

  31、簡(jiǎn)單描述一下你做過(guò)的移動(dòng)APP項(xiàng)目研發(fā)流程?

  32、你在現(xiàn)在的團(tuán)隊(duì)處于什么樣的角色,起到了什么明顯的作用?

  33、你認(rèn)為怎樣才是全端工程師(Full Stack developer)?

  34、介紹一個(gè)你最得意的作品吧?

  35、你有自己的技術(shù)博客嗎,用了哪些技術(shù)?

  36、對(duì)前端安全有什么看法?

  37、是否了解Web注入攻擊,說(shuō)下原理,最常見(jiàn)的兩種攻擊(XSS 和 CSRF)了解到什么程度?

  38、項(xiàng)目中遇到國(guó)哪些印象深刻的技術(shù)難題,具體是什么問(wèn)題,怎么解決?。

  39、最近在學(xué)什么東西?

  40、你的優(yōu)點(diǎn)是什么?缺點(diǎn)是什么?

  41、如何管理前端團(tuán)隊(duì)?

  42、最近在學(xué)什么?能談?wù)勀阄磥?lái)3,5年給自己的規(guī)劃嗎?

【web前端面試題及答案】相關(guān)文章:

Web前端面試題目及答案06-09

web前端開(kāi)發(fā)面試題05-31

前端面試題及答案05-09

前端面試題庫(kù)及答案05-09

web前端工作技能簡(jiǎn)歷范文01-11

web前端工程師簡(jiǎn)歷參考模板03-15

web前端網(wǎng)頁(yè)設(shè)計(jì)師簡(jiǎn)歷模板10-27

Web/Ajax的面試題06-14

java前端開(kāi)發(fā)面試題05-09