一次前端筆試總結

1.有一個長度未知的數組a,如果它的長度為0就把數字1添加到數組里面,否則按照先進先出的隊列規則讓第一個元素出隊。

分析:這道題主要是考核了數組的隊列方法和棧方法。另外,原題還有字數限制的,只有在字數小于30并且結果正確時才可以滿分。所以,我們可以使用三目運算符(: ?)來減少字數。代碼如下:

a.length === 0 ? a.push(1) : a.shift();

我當時忘記了出隊是shift還是unshift,結果竟然誤用了unshift,暈死了!

2.下面代碼會輸出什么:

var test = (function(a) {this.a = a;return function(b) {return this.a + b;}
} (function(a, b) {return a;
}(1, 2))); 
console.log(test(4)); //輸出什么????

分析:這道題考了與函數有關的的兩個非常重要的概念:自執行函數和閉包。但是不難,答案應該是5。

3.請把<ul><li>第1行</li><li>第2行</li>...</ul>(ul之間有10個li元素)插入body里面,注意:需要考慮到性能問題。
分析:這題主要考察了dom操作。插入節點操作的可以使用insertBefore和appendChild方法,隨便用一個都行。但是,題目要求要考慮性能問題,這才是關鍵,因為,JavaScript操作dom的開銷是很大的!提高性能就要減少dom操作。因此,我當時使用了下面的方法,只操作一次dom就夠的了:

var lis = "",
ul = document.createElement("ul");//把li以字符串形式生成
for(var i = 1; i <= 10; i++) {lis += "<li>第" + i + "行</li>";
}// 最后通過innerHTML插入ul里面
ul.innerHTML = lis;//這里才操作dom,把ul插入到body
document.body.appendChild(ul);

4.不使用loop循環,創建一個長度為100的數組,并且每個元素的值等于它的下標。
分析:當時看到題目要求不使用loop循環時,“聰明過頭”的我馬上就想到了使用間歇性定時器setInterval,代碼如下:

var a = [],i = 0;
var interval = setInterval(function() {i < 100 ? a.push(i++) : clearInterval(interval);
}, 0);

確實沒有使用loop循環,我當時還對自己的聰明感到欣欣自喜呢!但是后來,跟朋友討論了一下,才知道這道題的目的是在考察我們對數組的熟練程度,而不是考察定時器!況且用這種方法來創建數組性能也不見得有多高!他的做法是先創建一個長度為100的數組,然后再使用數組的實例方法Array.prototype.map來重新賦值,代碼如下:

var a = new Array(100);a = a.map(function(item, index) {return index;
});

使用了map方法真是高端大氣上檔期啊!一開始,我也以為他的答案是正確的了,但是,后來我在控制臺打印了一下,卻發現也是不對的啊,因為,最終打出來的數組是一個長度為100的空的數組,如下:

前端學習交流群:461593224

好奇怪!這么好用的方法竟然輸出的結果也不正確,心好累啊!
后來,查了API,才知道, JavaScript數組是稀疏數組,比如,通過new Array(100)創建一個新的數組的,雖然他的長度是100,但是實際上他是一個空數組,也就是說沒有真實存在的元素。所以使用map方法,根本不會去遍歷這個數組100次的。后來,它知乎上問了一下,才學到了一個新的可行的方法,如下:

var a = Array(100).join(",").split(",").map(function(item, index) {return index;
});

這個解法充滿了曲折啊!先是創建一個數組,然后,通過join方法把它轉成字符串,然后,再通過split方法把字符串轉成數組,這時候,它就擁有100個值為空的元素了,然后,再通過map函數,改變這些元素的值即可。

5.實現對數組進行亂序
這道題考察了數組的sort方法,因為是亂序,所以,還需要用到Math.random()產生隨機數,打亂排序規律!代碼如下:

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],sign = 1; 
a.sort(function(a, b) {//因為Math.random產生的數在0-1之間//所以0.5兩邊的概率是相等的//大于0.5時為升序,小于0.5時為降序sign = (Math.random() > 0.5) ? 1 : -1;return (a - b) * sign;});

6.有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和
分析:其實,對于數組求和有很多種方法,也很簡單。但是,這題有兩個限制條件:優雅的方式、前10個元素。對于“前10個元素”這個限制條件可以使用Array.prototype.slice()方法來截取,對于"優雅的方式",我的理解是應該盡可能使用數組自帶的方法,最好可以使用高階函數!所以我覺得應該是Array.prototype.reduce()方法。代碼如下:

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
sum = 0;sum = a.slice(0, 10).reduce(function(pre, current) {return pre + current;
});console.log(sum); //55

這樣看起開會比使用for循環優雅了不少哈!

后面的都是主觀題,答案不唯一

7.JavaScript實現繼承的常用方法有哪些?你推薦的是哪一種?

8.在項目開發完成之后,根據雅虎性能優化規則,需要對html,JS,CSS,圖片需要做出怎樣的處理?是否可以借助構建工具實現自動化?

9.當項目的某個模塊發生問題了,你是怎么定位錯誤的?你常用的調試工具是什么?

10.我們在跟后端進行異步請求時,很容易陷入嵌套太深的陷阱?

學習前端的同學注意了!!!
學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入前端學習交流群461593224,我們一起學前端!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java文件類boolean setLastModified(long set_new_time)方法,包含示例

文件類boolean setLastModified(long set_new_time) (File Class boolean setLastModified(long set_new_time)) This method is available in package java.io.File.setLastModified(long set_new_time). 軟件包java.io.File.setLastModified(long set_new_time)中提供了此方法…

[轉載] Linux里面的文件目錄類指令

參考鏈接&#xff1a; 如何運行不同目錄中的Java類文件 引用&#xff1a;尚硅谷韓老師的《尚硅谷-Linux-經典升級》 日常總結 pwd 指令 &#xff08;顯示當前工作目錄的絕對路徑&#xff09; 基本語法 pwd (功能描述&#xff1a;顯示當前工作目錄的絕對路徑) …

[轉載] 微服務安全和治理

參考鏈接&#xff1a; 微服務介紹 在整體式架構中&#xff0c;由于運行應用程序的運行時環境相對隔離&#xff0c;所以治理和安全保護很簡單。微服務架構具有典型的革新特征&#xff0c;給活動的治理和應用程序的安全威脅保護帶來了更多挑戰。 微服務架構中的安全性 微服務…

SSL

今天遇到一位網友要求老蔣將他當前已經在使用的WDCP面板環境&#xff0c;給某個站點添加SSL證書&#xff0c;實現HTTPS網址訪問。在過去的幾篇文章中&#xff0c;老蔣也有分享過不少在Linux VPS中對應的WEB環境安裝SSL證書的經歷&#xff0c;其實總體來看都大同小異&#xff0c…

[轉載] Java中如何引用另一個類里的集合_Java工程師面試題整理

參考鏈接&#xff1a; 在Java中將預定義的類名用作類或變量名 花了一星期把學過的都整理一遍 盡量易懂&#xff0c;從基礎到框架 最新版大廠面經匯總出爐&#xff0c;持續更新中 匯總完了上傳網盤&#xff0c;設計到后端架構師的一切知識 如果沒更新就代表我死了 一&#xff0…

應用寶認領應用

2019獨角獸企業重金招聘Python工程師標準>>> 【Android】命令行jarsigner簽字和解決找不到證書鏈錯誤 1、簽名失敗 $jarsigner -verbose -keystore /Volumes/Study/resourcesLib/Qunero-achivements/AndroidApp/QuLordy-signed-key -signedjar ./signed_XiaomiVerif…

[轉載] Java | Java 面向對象知識小抄

參考鏈接&#xff1a; 在Java中將預定義的類名用作類或變量名 0. 前言 下面是本篇的內容提綱&#xff1a; 1. 類 Java 中類的聲明形式如下所示&#xff0c;變量的聲明和方法的定義意味著只能聲明變量、初始化、方法定義等&#xff0c;而不能在方法外進行賦值等操作。 …

bash顏色、變量、數組、相關腳本示例

下面是bash的相關內容&#xff0c;包括bash的顏色代碼、bash的四類文件、bash中變量處理方式、數組變量、shell的過程式編程語言以及部分簡單腳本例子。 一、bash的顏色顯示規則&#xff08;顏色代碼&#xff09; bash的顏色代碼&#xff0c;是ASCII編碼對于顏色進行設置。顏色…

[轉載] java程序員快速學c++

參考鏈接&#xff1a; 如何成為一名優秀的Java程序員 java程序員快速學c java程序員學cplus&#xff0c;其實大部分的語法是一樣的&#xff0c;但是對java程序員來將&#xff0c;還是有寫難點需要注意。看完這些還不能保證會寫c程序&#xff0c;不過一般的程序可以看懂&…

[轉載] Java標識符 數據類型 常量與變量

參考鏈接&#xff1a; Java標識符 Java標識符 Java對包、類、接口、方法、變量、常量&#xff08;不包括項目名&#xff09;等命名時使用的字符序列稱為標識符。 命名規范&#xff1a; 1.標識符由數字、字母、_、$組成&#xff0c;且首字母不能是數字。 2.標識符對大小…

設計模式單例

單例模式 設計原則&#xff1a;無常用場景&#xff1a;應用中有對象需要是全局的且唯一使用概率&#xff1a;99.99999%復雜度&#xff1a;低變化點&#xff1a;無選擇關鍵點&#xff1a;一個對象在應用中出現多個實例是否會引起邏輯上或者是程序上的錯誤逆鱗&#xff1a;在以為…

Squid服務日志分析

Squid服務日志分析 Apache 和 Squid 是兩種著名的代理緩存軟件&#xff0c;但Squid 較 Apache 而言是專門的代理緩存服務器軟件&#xff0c;其代理緩存的功能強大&#xff0c;支持 HTTP/1.1 協議&#xff0c;其緩存對象也較多&#xff1b;并且 Squid 的緩存管理模塊和訪問控制模…

[轉載] Java中的元數據

參考鏈接&#xff1a; Java中的數據類型 元數據 也可能剛聽到元數據你會有點陌生&#xff0c;其實任何一個使用過struts&#xff0c;ejb或者hibernate的開發人員都在不知不覺中使用元數據。所謂的元數據是指用來描述數據的數據&#xff0c;更通俗一點就是描述代碼間關系&#…

云時代 揭開性能監測戰略的隱秘優勢

云時代的性能監測戰略 能夠對各種變化做出快速響應而不偏離重心和企業發展動力&#xff0c;正逐漸成為各行各業、各種規模企業的奮斗目標。業務敏捷性通常是運營良好&#xff0c;可實現盈利的企業標志。實現這一目標意味著公司已經成功地利用業務關鍵型技術來提高生產率&#x…

[轉載] java 枚舉Enum源碼解析

參考鏈接&#xff1a; 使用Java枚舉 應用場景 枚舉是單例模式中的一種。面試官系統之設計模式&#xff08;單例模式&#xff09; 簡單來講就是只能實例化一次&#xff0c;線程安全且性能高。枚舉通常用來列舉一個類型的有限實例集合&#xff0c;我們可以使用常量集來實現&…

聊聊全站HTTPS帶來的技術挑戰

日前寫的文章里了討論了數據傳輸的安全性的問題&#xff0c;最后一部分提到了通過HTTPS解決數據傳輸安全性的方案。那么一個新問題又來了&#xff0c;實施全站HTTPS的過程中&#xff0c;我們可能會遇到哪些技術問題?所以我今天和大家一起來算一下這個賬&#xff0c;將技術成本…

[轉載] spring mvc自定義int枚舉轉換器

參考鏈接&#xff1a; Java中具有自定義值的枚舉 2019獨角獸企業重金招聘Python工程師標準>>> public class MyIntegerEnumConverters { WritingConverter public static class EnumToIntegerConverter implements Converter<IntEnumConvertable, String> {…

使用BufferedImage進行漸變色操作

序 本文主要簡述一下如何使用BufferedImage進行漸變色操作。 GradientPaint java/awt/GradientPaint.java public class GradientPaint implements Paint {Point2D.Float p1;Point2D.Float p2;Color color1;Color color2;boolean cyclic;//...... } 這個是生成漸變色的關…

[轉載] Java中的字符串處理

參考鏈接&#xff1a; Java中的StringBuffer appendCodePoint()方法以及示例 JDK8在線Api中文手冊 JDK8在線Api英文手冊 Java中的字符串處理 1.1 String類的構造函數1.2 字符串的長度1.3 特殊的字符串操作1.3.1 字符串字面值1.3.2 字符串連接1.3.3 字符串和其他數據類型的連…

MySQL循環語句之while循環測試

轉自&#xff1a;http://www.nuoweb.com/database/7614.htmlMySQL有循環語句操作&#xff0c;while 循環、loop循環和repeat循環&#xff0c;目前我只測試了 while 循環&#xff0c;下面與大家分享下mysql 操作同樣有循環語句操作&#xff0c;網上說有3中標準的循環方式&#x…