摘要:前言上周二在阿里暑期實(shí)習(xí)的前端筆試那里打了個(gè)醬油。當(dāng)不存在時(shí),將會(huì)創(chuàng)建它。要求單擊該元素后,提示用戶用戶名不能為空。要求內(nèi)邊框?qū)挾葹椋瑹o外邊框。要求在前端實(shí)現(xiàn)一個(gè)根據(jù)一批員工,通過查詢員工信息的功能。其實(shí)是考察的內(nèi)容。
前言
上周二在阿里暑期實(shí)習(xí)的前端筆試那里打了個(gè)醬油。題目說實(shí)話都很基礎(chǔ),但如果之前沒有專門寫過類似的東西,現(xiàn)想現(xiàn)寫的話,一個(gè)小時(shí)壓力還是有些大的(當(dāng)然了,大神除外)。
下面把題目分享給大家,歡迎大家一起探討交流,共同進(jìn)步。
我做了一些,后面的大題肯定有沒寫完的。稍晚些貼上來吧。
下列符合規(guī)范的 AMD 模塊 ID 有?(單選)
【A】../../foo/Boo/WoO;
【B】foo/boo/Woo;
【C】./foo/boo/woo;
【D】foo/boo/woo.js;
不知道 AMD 是神馬(我的第一反應(yīng)怎么是做 CPU 和顯卡的那個(gè)),當(dāng)時(shí)也沒仔細(xì)谷歌。。看著順眼隨便選了個(gè) 【C】
后來找了找,...
以下說法正確的有:(單選)
【A】HTML5 規(guī)范中不建議在一個(gè)頁面中使用多個(gè) h1;
【B】table 標(biāo)簽是過時(shí)的,不建議使用;
【C】Ajax 請(qǐng)求不可能阻塞 UI 線程;
【D】在網(wǎng)頁首次加載的時(shí)候,visibility 值為 hidden 的圖片還是會(huì)被瀏覽器請(qǐng)求
應(yīng)該是D吧。。
第三題javascriptvar a = 0; function A(){ this.a = 1; setTimeout(function(){ this.a = 2; try{ this.b="b"; throw ""; } catch(e){ this.b="bb"; } },0); this.b="bbb"; } var aa = new A(); setTimeout(function(){ console.log(aa.a); console.log(window.a); console.log(aa.b); console.log(window.b) },0);
選項(xiàng)沒截圖下來,應(yīng)該分別輸出
1、2、bbb、bb;
考察點(diǎn)應(yīng)該是setTimeout()的作用域是全局對(duì)象,在瀏覽器中,即為 window
下面的說法哪些是正確的:
【A】將打印出 true.
javascriptfunction foo(x){ x = x || 1; console.log(x); } foo(2);
【B】將打印出 No
javascriptx=1; if(x===true){ console.log("Yes"); } else{ console.log("No"); }
【C】將打印出 undefined 2
javascriptvar obj1 = {x:1}, obj2 = {x:2}; (function(obj2){ delete obj2.x })(obj1); console.log(obj1.x, obj2.x);
【D】會(huì)打印出2
javascriptvar x = 1; setTimeout(function(){ x = 2; },0) console.log(x);
選 B、C
第五題下列哪些 web 安全措施用于防御 csrf 攻擊:
【A】http 響應(yīng)添加 Content-Security-Policy 頭部
【B】表單提交時(shí)需帶上 token 并在服務(wù)器端校驗(yàn)通過才行
【C】前端對(duì)用戶輸入的內(nèi)容進(jìn)行編碼
【D】每次請(qǐng)求的 token 最好都不一樣
【E】禁用 OPTIONS 方法
Web 安全高大上,當(dāng)時(shí)谷歌了一把,發(fā)現(xiàn) csrf 攻擊好像可以用 token 去對(duì)付,就選了有 token 的兩個(gè),B 和 D.
第六題javascriptvar obj = { "1":"a", "2":"b", "length":2, push:Array.prototype.push } obj.push("c");
瀏覽器執(zhí)行以上腳本后,說法正確的是:
【A】obj 的 length 屬性會(huì)變?yōu)?3;
【B】obj 的 length 屬性不會(huì)變;
【C】obj3 的值是 c;
【D】obj1 和 2 的值不會(huì)發(fā)生變化;
【E】obj2 的值是 c;
【F】obj3 的值是 undefined;
選 A、E、F
說一下Array.prototype.push。
js Array 的源碼好像是這個(gè)
V8
Array.prototype.push的部分貌似是這個(gè):
javascriptfunction ObservedArrayPush() { var n = TO_UINT32(this.length); var m = %_ArgumentsLength(); try { BeginPerformSplice(this); for (var i = 0; i < m; i++) { this[i+n] = %_Arguments(i); } var new_length = n + m; this.length = new_length; } finally { EndPerformSplice(this); EnqueueSpliceRecord(this, n, [], m); } return new_length; } // Appends the arguments to the end of the array and returns the new // length of the array. See ECMA-262, section 15.4.4.7. function ArrayPush() { CHECK_OBJECT_COERCIBLE(this, "Array.prototype.push"); if (%IsObserved(this)) return ObservedArrayPush.apply(this, arguments); var array = TO_OBJECT_INLINE(this); var n = TO_UINT32(array.length); var m = %_ArgumentsLength(); for (var i = 0; i < m; i++) { array[i+n] = %_Arguments(i); } var new_length = n + m; array.length = new_length; return new_length; }
另外還有一些規(guī)范性的說明:
MDN
push 方法把值添加到數(shù)組中。
push 方法有意具有通用性。該方法和 call() 或 apply() 一起使用時(shí),可應(yīng)用在類似數(shù)組的對(duì)象上。push 方法根據(jù) length 屬性來決定從哪里開始插入給定的值。如果 length 不能被轉(zhuǎn)成一個(gè)數(shù)值,則插入的元素索引為 0,包括 length 不存在時(shí)。當(dāng) length 不存在時(shí),將會(huì)創(chuàng)建它。
唯一的原生類數(shù)組(array-like)對(duì)象是 Strings,盡管如此,它們并不適用該方法,因?yàn)樽址遣豢筛淖兊摹?br> 當(dāng)調(diào)用該方法時(shí),新的 length 屬性值將被返回。
所以說,push會(huì)根據(jù)對(duì)象length屬性的值去確定插入的位置,即this[i+n] = %_Arguments(i)。
所以在原題中obj.length值為2,調(diào)用obj.push("c")時(shí),會(huì)發(fā)生obj[2]="c"的情況,所以最后 obj[2]就變成了"c",而不是原來的"b"。
當(dāng)然了,push方法最后會(huì)根據(jù)傳入的參數(shù)個(gè)數(shù)多少,即arguments.length來返回new_length,并賦值給obj.length。
ECMAScript 5
里面詳細(xì)介紹了 push 方法調(diào)用時(shí)候的步驟。可以研究一下。
輸入你的github、技術(shù)博客或微博的網(wǎng)址:
這道題目告訴我們,需要有一個(gè)技術(shù)博客。
第八題不借助第三方庫,請(qǐng)編碼完成:給一個(gè)超鏈接元素綁定一個(gè)鼠標(biāo)單擊的事件。要求單擊該元素后,提示用戶“用戶名不能為空”。注意:請(qǐng)盡可能兼容給多的瀏覽器
考察原生 js 事件綁定,在JavaScript高級(jí)程序設(shè)計(jì)那本書的事件章節(jié)有詳細(xì)講述。不過話說有空去看看 jQuery 那貨是怎么做的肯定大有幫助。
html我是一個(gè)超鏈接
javascriptvar a = document.getElementById("hyper"), handler =function(e){ alert("用戶名不能為空"); } if (window.addEventListener){ a.addEventListener("click",handler,false); } else if(window.attachEvent){ a.attachEvent("onclick",handler); } else{ a["onclick"]=handler; }第九題
請(qǐng)使用至少兩種方案實(shí)現(xiàn)左中右三欄布局,左欄固定寬度 100px,右欄固定寬度 100px,中欄寬度不固定,三欄寬度加起來正好是 100%。
考察 CSS 布局。
第十題使用 HTML、CSS 代碼實(shí)現(xiàn)一個(gè)九宮格的頁面布局。要求內(nèi)邊框?qū)挾葹?1px,無外邊框。
話說“九宮格”是神馬。。我只能想到是火鍋= =
第十一題請(qǐng)你使用多種方式實(shí)現(xiàn)一個(gè) IOS 樣式的開關(guān)
就想到了切圖和CSS3的方式
第十二題用 JS 來實(shí)現(xiàn)一個(gè)函數(shù),用來判斷一個(gè)字符串中出現(xiàn)次數(shù)最多的字符,并統(tǒng)計(jì)出這個(gè)次數(shù)
codewar 里頭全是這種類似的題,可惜當(dāng)時(shí)做的時(shí)候時(shí)間太急,寫錯(cuò)了個(gè)地方TAT。代碼略丑,還望各位賜教。
javascript第十三題
function judge(str){ var arr = str.toLowerCase().split(""); arr.sort(); var pre = ""; var max = 1; var num = 1; var most = ""; arr.forEach(function(item,index,arr){ if (index === 0){ pre = item; } else{ if (item === pre){ num++; if (max<=num){ max = num; most = item; } } else{ num = 1; } pre = item; } }); console.log("最多的字符為:" + most +";次數(shù)為:" + max); } //judge("addqbcabceddqeeffjjjqqqq");
給定一個(gè)http接口,傳入一個(gè)員工id,返回員工的詳細(xì)信息,接口形式為 http://localhost/query?id=。要求在前端實(shí)現(xiàn)一個(gè)根據(jù)一批員工id,通過 ajax 查詢員工信息的功能。
其實(shí)是考察 ajax 的內(nèi)容。昨天才看的 ajax,sigh。
HTML:
htmlHere is the data
客戶端JS:
javascript
var btn = document.getElementById("btn"); btn.onclick = function(){ var idList=[1,2,3,4,5,6,7,8,9,10], ul = document.createElement("ul"); idList.forEach(function(index,item,array){ if (XMLHttpRequest){//IE7 之前會(huì)不存在的 var xhr = new XMLHttpRequest(), url = "http://localhost:3030/query?id=" + item; xhr.open("get", url, true); xhr.onreadystatechange = function(){ if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){ if (xhr.readyState == 4 ){ ul.innerHTML += "" + item + ":" + xhr.responseText +" "; } } else{ console.log("error"); console.log(xhr.status); } }; xhr.send(null); } }); document.getElementById("data").appendChild(ul); }
簡單用 Nodejs 和 Express 模塊寫了個(gè)服務(wù)器,輕拍,只是做測試用的
javascriptvar express = require("express"); var app = express(); app.get("/query",function(req,res){ var url = req.url; var id = url.substring(url.indexOf("=")+1); res.send(id); }); app.use(express.static(__dirname)); app.listen(3030);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85607.html
摘要:前言上周二在阿里暑期實(shí)習(xí)的前端筆試那里打了個(gè)醬油。當(dāng)不存在時(shí),將會(huì)創(chuàng)建它。要求單擊該元素后,提示用戶用戶名不能為空。要求內(nèi)邊框?qū)挾葹椋瑹o外邊框。要求在前端實(shí)現(xiàn)一個(gè)根據(jù)一批員工,通過查詢員工信息的功能。其實(shí)是考察的內(nèi)容。 前言 上周二在阿里暑期實(shí)習(xí)的前端筆試那里打了個(gè)醬油。題目說實(shí)話都很基礎(chǔ),但如果之前沒有專門寫過類似的東西,現(xiàn)想現(xiàn)寫的話,一個(gè)小時(shí)壓力還是有些大的(當(dāng)然了,大神除外)。...
摘要:的暑期實(shí)習(xí)面試到現(xiàn)在差不多都結(jié)束了,算下來自己也投了十幾家簡歷,經(jīng)歷的差不多十場筆試,現(xiàn)場和電話面試也差不多有五六家公司。阿里三面三面不知道是不是交叉面,不過這次面試面試官說他是北京的之前都是杭州。 2017的暑期實(shí)習(xí)面試到現(xiàn)在差不多都結(jié)束了,算下來自己也投了十幾家簡歷,經(jīng)歷的差不多十場筆試,現(xiàn)場和電話面試也差不多有五六家公司。雖然最后只拿到兩個(gè)offer,所幸是自己期待的公司,下面從...
摘要:年開始的前三個(gè)學(xué)期有篇的產(chǎn)出。從技術(shù)角度來看,編程節(jié)奏加緊。十年文學(xué),我等你。寫給即將二十歲的你此你非彼你,寫給一直伴我的你。巧合遇到你后的這段光陰,無比的充實(shí)與激情飽滿。編程技術(shù)獨(dú)立的挑戰(zhàn)鼓勵(lì)你。希望足以承擔(dān)我愛你。 showImg(https://segmentfault.com/img/remote/1460000011417994); 這倆年通過體驗(yàn)博客園、常駐簡書、甚至搭建靜...
摘要:一些知識(shí)點(diǎn)有哪些方法方法前端從入門菜鳥到實(shí)踐老司機(jī)所需要的資料與指南合集前端掘金前端從入門菜鳥到實(shí)踐老司機(jī)所需要的資料與指南合集歸屬于筆者的前端入門與最佳實(shí)踐。 工欲善其事必先利其器-前端實(shí)習(xí)簡歷篇 - 掘金 有幸認(rèn)識(shí)很多在大廠工作的學(xué)長,在春招正式開始前為我提供很多內(nèi)部推薦的機(jī)會(huì),非常感謝他們對(duì)我的幫助?,F(xiàn)在就要去北京了,對(duì)第一份正式的實(shí)習(xí)工作也充滿期待,也希望把自己遇到的一些問題和...
閱讀 2562·2021-09-02 15:40
閱讀 1565·2019-08-30 15:54
閱讀 1079·2019-08-30 12:48
閱讀 3398·2019-08-29 17:23
閱讀 1046·2019-08-28 18:04
閱讀 3664·2019-08-26 13:54
閱讀 606·2019-08-26 11:40
閱讀 2390·2019-08-26 10:15