【面試問題】——秋招面試中遇到的一些問題&思維導圖


前言:秋招也跑了挺多的公司,雖然都是招Web前端,但是不同的公司,因為需求和目的不同,面試的考察點也是各不相同。我沒有實習經驗,只有自己學東學西比較雜也比較淺的一些知識積累可以用,這個過程我發現了自己的不足,也增加了很多對公司、對社會的閱歷,覺得自己成長了。哈哈哈,廢話不多說,下面我就整理一下自己面試的很多問題,還有自己整理總結的答案、分析。


一、基礎入門類

 

 

  

 

二、原生JS和Jquery操作DOM元素

 

 

 

  • 常用的事件:十個
  1. click
  2. mousemove
  3. mouseover
  4. mouseout
  5. mouseenter
  6. mouseleave
  7. mouseup
  8. scroll
  9. mousewheel
  10. onkeydown

【特別注明:這里原生JS和JQuery操作DOM元素  參考梳理自博文 —— 感謝原作者的分享,這里僅作學習整理】

 

三、PHP和Node.js的區別

 

 

面試問了PHP和Node.js的區別,是因為它們首先值得比較(相似點很多):兩者都是開放源碼,都是致力於web開發,並且都可用於相似的項目

下面將會對 PHP 和 Node.js 進行十幾個方面的比較。每個對比都會考量可以應用到任意 web 技術的常見的開發挑戰。我們不會太深入討論細節;很少有人會關心隨機數生成器或數組排序的價值。

【特別注明:這里PHP和Node.js的區別梳理參考 文章 —— 感謝原作者的分享,這里僅作學習整理】

 

  PHP Node.js
創建時間 1994年 2009年
運行基礎 安裝在web服務器(Apache等)上的組件運行的

基於Google的V8 JavaScript解釋引擎

(在Chrome瀏覽器里它負責執行客戶端的JavaScript代碼)

和其他語言不同的地方 PHP代碼可以和HTML混合到一塊

Node.js內置了處理網絡請求和響應的函數庫,

所以不需要單獨的服務器(Apache等)或者其他依賴

起步

一段<?php …php>代碼可以放在任意.php文件中,

在瀏覽器中輸入URL跳轉到文件即可

但是,只能運行於安裝了PHP的web服務器

只需要 下載安裝程序 或 使用包管理器

在瀏覽器輸入http://127.0.0.8080/之前,

需要在終端輸入node app.js來啟動應用程序

幫助和支持 有大量的指南和二十年的 Q&A 擁有很好的文檔,但是更加年輕,能提供的幫助較 PHP 也少
語言語法

PHP不會限制按特定的方式編寫,

PHP在版本間可能有一些調整,但是向后兼容一般都做的很好

也導致一個問題:PHP很混亂,

怎么統計一個字符串中字符的個數

PHP有數以百記的函數,而且命名規則也不完全一致

JavaScript代碼比PHP簡潔

例如,你再不需要跟 JSON 轉來轉去—— UTF-8 也不用

全棧工程師可以同時在客戶端與服務端使用 JavaScript 

大腦不用來回切換

開發工具  

NPM包管理器

NPM允許安裝和管理依賴,設置配置變量,定義腳本和其他

 環境  PHP本質上就是一個服務端技術,它很擅長該領域

 JavaScript原來的主戰場還是瀏覽器,

Node.JS出現后可以在任何地方使用,

瀏覽器、服務器、終端、桌面甚至嵌入型系統

 集成  PHP的擴展,使他能和擁有主流或冷門的API的服務器直接通訊

 Node.js會為某些老舊冷門的技術尋找成熟集成組件而頭疼

 托管和部署

 隨機聯系某個網頁托管公司你可以找到對主要的 PHP 支持,

也許還免費附送 MySQL

 Node.js 是個不同的野獸,服務端的應用永遠運行。

你需要一台物理/虛擬/雲或定制的服務器環境,最好有 root 權限,

這對有些服務器來說遙不可及,特別是那些共享的服務器,

你有可能讓整台服務器宕機

 性能 ↓

 PHP很快,

有很多項目和選項可以使他跑得更快,

幾乎不會擔心速度問題

 Node.js性能通常會更好一點

1、Node.js更少的依賴

所有對PHP的應用,都必須經過一個Web服務器的路由,

來啟動PHP的解釋器運行PHP代碼

Node.js不需要這些依賴,

而且你基本一定會使用一個帶服務器的框架,

比如:Express,它很輕量,很好的扮演應用的一部分

2、Node.js更小更快的解釋器

會受到舊版語言遺留兼容問題的拖累

Node.js 的解釋器比 PHP 的更小更靈活。

他並不受舊版語言遺留兼容問題的拖累,

而且 Google 在 V8 引擎性能改善上出了大力。

3、Node.js應用永久在線

PHP遵循標准客戶端—服務端模型。

每個頁面請求都會初始化應用;

讀取配置參數、連接數據庫、讀取信息、渲染HTML。

Node.js應用持久運行,只需要啟動一次。

例如:可以創建一個單獨的數據連接對象,然后所求請求一起復用

4、Node.js事件驅動,無阻塞I/O

PHP跟其他多數服務器語言采用阻塞執行的模型。

當你執行一個命令,比如數據庫取數據,

那么必須等這個命令執行完成后,才執行下面的命令

Node.js通常不會等的,

取而代之的是,你需要提供一個回調函數,

這個函數當指令執行后,會被調用一次。

換句話說,當解釋器在其他進程處理的時候可以干些別的事情

 

 關於集成:指開發技術很受限制,除非它們能與數據庫和驅動集成。

 關於性能:性能很大程度上決定於開發團隊的經驗以及是否上心。

 關於Node.js事件驅動,無阻塞I/O的幾個警告:

  1. Node.js/JavaScript只能在單線程上運行,但是大多數Web服務器都是多線程,而且並發的處理請求。
  2. 一個用戶長時間運行的 JavaScript 處理會阻止其它用戶的代碼執行,除非拆分任務或者使用Web Workers。

開發建議:評估選項,根據你的需求來選擇一門語言,這比這樣的”對比“靠譜得多。

 

四、AngularJS和Node.js的區別

 

 

從應用上來說,寬泛的講:

  1. node.js是用於服務器端,做后台程序的。
  2. AngularJS是前端框架,主要用於數據綁定;不需要安裝,只要在<script>標簽導入就能用了。

當然,面試一定不是問這個,這個太敷衍了,要區別AngularJS和Nodejs的原因,首先也是因為它們是有相似點的:

  1.  它們都是單線程運行類型。
  2.  都可以使用一個主文件(引導頁面或js文件)+多個路由運行的模式,實現頁面的跳轉。

【特別注明:這里AngularJS和Node.js的路由區別梳理參考 文章 —— 感謝原作者的分享,這里僅作學習整理】

 

  AngularJS的路由 NodeJS(Express)的路由
頁面跳轉

針對於頁面的路由,每次路由發生變化,

只是頁面的狀態發生變化,頁面本身沒有發生跳轉

express的路由是針對頁面的,

也就是說他做的頁面,路由的切換是伴隨着頁面的切換

路由類型

Angular的路由是前台的就是以前html的各個錨點

#login,#index,#user,看到了沒,有個井號

Express的路由是后台的url

例如:/user/:id/edit

互相使用 Angular不可以跑Express

Express可以跑Angular

可以在Express的路由里面跳轉到一個Angular頁面

之后所有的操作可以在Angular的路由里面玩耍,

但是玩耍到最后,

發生數據交互,還是要發給Express


關於頁面跳轉的選擇,建議:頁面內部的路由變化使用angular.js 的router,而頁面間的路由用express

 


注:轉載請注明出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM