當前位置:首頁>職場>前端面試問到對公司的了解(12)
發布時間:2024-01-24閱讀(15)
長文警告
寫了那么久的技術文,來點不一樣的吧。
最近公司招人,所以面試了一波,總結了一下前端這個區間內的要求吧。
僅代表個人意見和理解
名詞解釋程度副詞對于不同程度的詞,我的理解如下:
精通掌握
- 了解背后的原理和規范
 - 動手重寫過實現代碼
 - 可以以為此為基礎做二次開發
 - 能讀懂源碼并做出修改
 熟悉
- 曾在項目中大量使用過此技術
 - 可以自如的使用這項技術進行開發
 - 參與技術論壇區討論或者寫過相關文章
 了解
- 曾在項目中使用過
 - 通讀過相關文檔
 - 可以快速對相關問題定位到文檔內容中
 - 了解一些較冷僻的相關語法糖和api等
 不了解
- 未在開發中使用過,但寫過demo
 - 閱讀過相關文檔或者視頻教程
 - 可以用五分鐘內向他人介紹這項技術的特點和應用場景
 
- 只是聽過名字
 - 只是大概的翻過文檔
 - 沒有寫過關于這項技術的代碼
 - 需要同時具備當前等級所有特性
 - 高等級描述包含低等級描述特性
 非常多的簡歷中寫到的了解,其實是不了解,熟悉和掌握可能往往只是了解的水平,如果你寫的精通,那么我就要帶著電腦來面試你了。
手寫代碼:可以借助emmet或者編輯器的提醒,非復制粘貼整段代碼的方式書寫代碼。
記憶性考察:需要背下來的內容,不可以借助搜索引擎。比如大多數關鍵字的拼寫,對于超長關鍵詞可以借助編輯器完成輸入。一些常用的知識點也會要求記憶性考察,比如盒模型和選擇器規則,因為日常使用頻度較高,理應記住。
索引性考察:可以一次性在搜索引擎通過技術關鍵字找到解決方案。比如:我們希望做一個特殊效果的輪播圖,文字和背景圖不同步滾動,背景圖每次只是水平偏移一小截,文字則是整頁的滾動 面對這個描述能夠識別出搜索關鍵詞為“視差滾動”
理解性考察:要求能夠通過代碼的方式展現知識點以及和其他知識點的對比。能夠在某應用場景內設計出該技術的使用方案。能夠講清其背后的數學原理或者邏輯關系。
面試意圖正面
反面
- 是否具有工作崗位所需要的最低能力
 - 是否有過類似項目開發經歷
 - 是否掌握工作崗位所需技能
 - 現場編碼解決問題
 - 正確使用搜索引擎
 - 能夠對之前項目中使用過的技術做出詳細解釋
 - 是否對技術有熱情
 - 有在線可訪問的代碼
 - 有技術博客
 - 在技術社區積極回答問題
 - 關注新技術,并且做過官方demo以外的案例
 - 日常使用技術解決生活中的問題
 - 成長空間
 - 計算機專業背景
 - 良好的算法基礎
 - 良好的表達能力
 - 做過技術文章翻譯
 - 有至少一項5年以上的愛好
 面試方式
- 對冷門知識點做記憶性考察
 - 對過時知識點做解釋型
 - 以回答出問題的個數作為錄用指標
 - 面試應該像測視力一樣,一開始從最容易的問題入手,逐步深入,直到無法正確回答。
 - 如果面試中面試者沒有回答對任何問題或者回答對了所有的問題,都不是一次成功的面試。
 
- 了解職業經歷,確認工作內容。
 - 通過場景概括出技術能力范圍。
 - 面試前確認,模糊的地方在開始的時候確認。
 - 參與了哪些項目,在項目中扮演什么角色,完成了哪些編碼工作。
 - 工作的流程是怎么樣的,是否有規范(比如gitflow)工作的經驗。
 - 按照簡歷的技能列表挑選比較鮮明的做提問。
 - 對于基礎知識,比如HTTP協議,以記憶性考察為主;對于正則路由promise等技術如果不是近期項目使用過,但是- 聲稱掌握,可放寬為索引性考察。
 - 我常常會進行一個額外的環節,就是讓面試人在簡歷中圈出真實技能,排除注水內容,然后只對圈出內容進行提問。因為在我看來,環境所迫帶來的簡歷注水也不該等同為面試人的品質問題,另一方面,是否能夠正確評價自己是程序員的一項重要能力。
 我們公司使用的技術棧相關api問答,以及根據情況來詢問更深層次的語法和用法等
大約5~10個問題,主要引導面試者講述技術的原理,以及技術的使用形式,以及使用過程中遇到的問題(參看附錄)。
比如面試者聲稱熟悉AJAX,我可能會問他AJAX使用了js的什么對象(原理),什么是異步函數(使用形式),跨域問題有沒有遇到過(問題),JSONP為什么能解決跨域問題(原理),jsonp返回的內容和json有什么不同(使用),jsonp使用遇到過哪些局限性(問題)…
按照這個層次遞進深入,直到面試者回答吃力或者無法回答。
一般不打斷面試者的敘述,哪怕說的是錯誤的,也會在整段講完之后再進行糾正,然后開始下一個話題。
做實際編碼的測試,主要考察編程能力。選用基本的js題目做測試,比如
在聚會中常玩數七的游戲,七的倍數和帶有七的數字都不能說,比如14,27,28。請找出1~100的不能說的數字。
考察的點有:總結
- 技術棧是否契合
 - 技術深度
 - 技術的基礎了解程度
 - 遇到問題的解題思路
 內容部分知識舉例說明了一些常見的技能列表,實際上會根據面試者的簡歷情況設置問題。
記憶性內容作為底線要求,如果不能達標,意味著基礎不牢,在日后的工作中會在很多基本的問題上搞不清。
編碼環節主要做搜索性考察,因為這是工作的常態形式。使用搜索引擎的能力決定了程序員的日常水平。
理解性考察對應的是知識點的理解和應用,是否能夠把知識點運用到開發中,并且對日常開發中遇到的問題有自己的思考,反應的是面試者的潛力和發展。
基本功考察
- 關于Html
 
- html語義化標簽的理解; 結構化的理解; 能否寫出簡潔的html結構; SEO優化
 - h5中新增的屬性; 如自定義屬性data, 類名className等, 新增表單元素, 拖拽Drag
 - h5中新增的API, 修改的API, 廢棄的API 稍作了解 (離線存儲, audio, video)
 
- 關于CSS
 
- CSS選擇器( 三大特性 )
 - BFC機制
 - 盒模型
 - CSS模塊化開發(封裝); SCSS和LESS的使用
 - 屏幕適配 以及 頁面自適應
 - CSS3中新增的選擇器
 - CSS3中新增的屬性, transform trasition animation等…
 
- 關于布局
 
- 標準文檔流(padding margin 負margin) 浮動float 定位
 - 百分比布局(流式布局): px單位 用 %num代替, 占父級元素的百分比
 - flex彈性布局: 主軸 輔助軸的幾個屬性
 - grid柵格布局: 使用框架中的類名來替代: 本質上還是百分比布局
 
- 關于JS基礎
 
- 變量數據類型及檢測: 基本 引用
 - 運算符: 算術 條件 邏輯 位 短路, 隱式轉換等
 - 條件, 循環, 異常處理 if switch(){case xxx:} try catch finally throw
 - 函數定義, 調用方式(apply, call, 直接調用), 傳參: 實參給形參賦值
 - 字符串, 數組, 對象常用API,
 - 正則表達式
 
- 關于JS高級
 
- 作用域, 作用域鏈, 閉包
 - 原型, 原型鏈, 繼承
 - 函數上下文, this指向
 - js的運行機制, 事件隊列和循環
 - 同步, 異步編程
 
- 關于網絡協議
 
- HTTP協議
 - cookie, session, token
 
- 關于ES6語法
 
- 字符串, 數組, 對象 擴展的api
 - 變量擴展: let const 解構賦值 塊級作用域
 - 函數擴展: 箭頭函數 默認參數, rest參數
 - 展開運算符, 模板字符串
 - set 和 map數據結構
 - 迭代器和生成器函數 next 和 yield的理解
 - proxy對象 屬性代理器: 屬性的讀取(get)和設置(set)相關操作
 - promise對象, 異步編程的解決方案
 - async await: 異步編程的終極方案 promise generator的語法糖
 - class語法 構造函數的語法糖
 - 模塊化編程 export import 的 導出和導入
 
- VUE基礎
 
- 基本指令
 - 實例的屬性和方法
 - 實例的生命周期
 - 組件基礎: 創建,注冊,添加屬性方法,套用等…
 - 組件通信傳值 父子, 兄弟, 跨級
 - 插槽slot等…
 
- VUE高級
 
- vue-router: 搭建SPA
 - 路由,組件的配置
 - 路由間的傳值
 - 路由跳轉
 - 路由的導航守衛
 - 記住在router.js 和 組件頁面中的使用方式
 - vuex: 狀態管理: 數據倉庫store
 - 實例化倉庫的5大屬性的使用
 state, getters, mutations, actions, modules
- 輔助函數mapState等…, 倉庫中計算屬性的映射, 方便操作
 - 記住在 store.js 和 組件中 使用方式
 
- VUE深入, 源碼閱讀
 DOM掌握原生的DOM操作增刪查改熟悉node和element對象事件關于事件的機制
- 數據響應式原理
 - virtual dom
 - diff 算法
 - nextTick等等…
 - vue2和vue3的數據綁定
 - vue3的componest API
 - vite的用法
 了解面向對象的思想,能夠以面向對象的思想構建應用。比如封裝一個日歷組件,設計對象所需的屬性值和方法。
- 冒泡和捕獲
 - 事件委托
 - 自定義事件
 - Event對象
 - 面向對象
 函數
- new方法
 - 繼承,派生
 - 原型和原型鏈
 工程化
- 熟悉Array,String等的方法
 - call和apply方法的使用
 - 鏈式調用
 - this
 
- 掌握gulp
 - 索引行考察手寫gulp任務
 - 掌握模塊化
 
- CMD標準
 - commonjs
 - ES6模塊
 - babel如何使用
 - webpack打包方案
 - 異步加載
 - 打包多個文件
 
- 掌握webpack
 
- 閱讀webpack文檔
 - 理解配置文件結構
 - 合并,注入生效代碼部分
 - 熱更新
 命名策略嵌套變量函數了解nodeJS對于前端崗位,nodejs的使用主要集中在自動化和搭建簡單的數據服務器兩個方面。
- CSS
 了解ES6
- 是否上傳過npm包
 - 斷點調試法
 - express
 - 插件
 - 中間件
 - 路由原理
 - HTTP協議
 - 數據庫查詢
 - HTML模板(ejs,pug)
 框架專題通用
- promise
 - Generator
 - 花括號作用域
 - class
 - 數組遍歷(ES5)
 - 嚴格模式(ES5)
 - 模塊系統
 前端模板
- MVC
 - 雙向數據綁定
 - 單項數據流
 - 組件化
 - 生命期
 - 路由
 工程能力考察:
- 橫向對比,所用模板的優點
 - 至少使用過兩種以上的前端模板
 
- 項目能力
 
- vue-cli腳手架搭建和功能配置 vue.config.js
 - vite的使用和搭建等
 - webpack的常用配置
 - 項目構建 打包
 
- 熟悉各類框架的文檔…
 
- UI框架: Bootstrap, MUI, Element-ui等
 - 常用的插件整理, 整理一個自己插件庫, 封裝自己的方法庫,組件庫
 
- 常用的工具熟練度
 
- PC端和移動端開發注意事項和兼容性
 
- 經驗總結: 如何快速確定項目的技術選型
 - 坑點總結
 
- 項目遇到坑坑坑!!!
 - 如何處理,如何提出issue并且合作處理
 模塊化, 組件化開發能力
- git或者svn等使用情況
 - 項目中的性能優化記錄 ( 都是細節點…多記錄 )
 - 需求文檔的理解, 可以結合 項目流程圖, UML圖
 - 問題解決能力: (bug定位調試, 查找文檔, 尋求他人…)
 - 平常有記錄的習慣嗎。
 內功考察:
- 項目分類; 各類文件整理,分類
 - 各類功能封裝
 - 組件和功能模塊的抽離, 解耦, 復用
 
- 面向對象的編程思想
 
- 類的抽象
 - 對象的封裝, 繼承
 - 為了更好的去管理數據, 分類數據 實現高內聚, 低
 
- 設計模式
 
- 設計模式感覺也是
 - 將面向對象思想 再度抽象成現實中 某些特定模式
 
- 數據結構和算法
 附加技能考察:
- 學習常用的排序搜索算法, 順序表,鏈表,棧,隊列,樹,堆 結構等等…
 - 考驗你的 抽象思維 和 數學功底了
 - 將現實需求 抽象成 計算機代碼 的思維能力
 
- 學習能力
 
- 持續學習的態度–博客, 筆記記錄
 - 技術論壇活躍度高, 問答多
 - GitHub開源項目參與
 
- 了解一門后端語言
 
- node.js, python, php等…
 - 數據庫mysql,redis,mongodb. sql的操作語句, mongo的操作語句, redis操作語句
 - node express 搭建本地服務等
 - python django request scrapy
 
- 系統編程
 
- Linux命令行操作, 系統文件管理
 - 多任務, 多線程, 多進程, 協程, 并發, 并行, 串行, 同步, 異步等概念的理解
 
公眾號:小何成長,佛系更文,都是自己曾經踩過的坑或者是學到的東西
有興趣的小伙伴歡迎關注我哦,我是:何小玍。 大家一起進步鴨
歡迎分享轉載→http://m.avcorse.com/read-220191.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖