大概是在6月11號在Boss直聘投的簡歷,6月12號中午收到電話約的面試時間,剛開始說是13號晚上7點;後面可能時間有變,中午來了個電話說改到9-10點;怎麼說算是第一次面試本身目標公司之一吧,記錄下無論過沒過,也是一份寶貴經歷。
- (面試時間:2018-6-12 晚上:9.00;時長:1小時11分鐘;公司:6666,(一面))
(一)簡單的介紹下本身
(二)平時都是怎麼學習前端的?
- me:學習前端的話,我主要是以書籍爲主、而後是網站視頻、博客、文檔等學習理論,以後再經過代碼實踐。。。
- H:前端的學習的話通常是得經過實踐的,平時有本身作過項目嗎?
- me:學習基礎的js階段的話主要是經過實現一些基本特效和模塊功能;在學習jQuery的時候作過一個
(三)作過哪些項目,你在其中主要工做
- 說了下使用JQuery階段,作過一個比較簡單的商場;
- 在接觸React是,也就是最近作的項目是一個徹底使用React全家桶搭建的二手商場;
- 其中主要的工做的話就是負責前端的大部分工做,包括界面的規劃,還有就是先後端交互等;
- 估計是一面,以後並無很深刻的問項目了,直接轉到談實習經歷。
(四)看你有在淘寶美工的實習經歷,說說你的工做
- 當時是在深圳的一家小型的電商公司實習的,主要工做的話,包括一些簡單的PS圖片處理;
- 還有就是店鋪的代碼美工優化,由於在淘寶和阿里的平臺上店鋪的裝修能夠經過代碼進行書寫;可是都會有對應的使用限制(簡單的說了下本身的平常工做)
(五)React組件的建立方式和區別
- React組件在本質上就是一個類,建立方式能夠說用三種形式:
- React.createClass:是最傳統、兼容性最好的方法,當是相對與其餘ES6的建立方式來講代碼量偏多;
- ES6 class建立:React.Component是以ES6的形式來建立react的組件的,是React目前極爲推薦的建立有狀態組件的方式,最終會取代React.createClass形式;相對於 React.createClass能夠更好實現代碼複用;
- 無狀態組件(直接函數定義):只傳入兩個參數props、context兩個參數;不存在state,沒有生命週期;
一、 無狀態函數式組件前端
- 無狀態組件的建立形式使用一個使代碼的可讀性更好,而且減小了大量冗餘的代碼,精簡至只有一個render方法,大大的加強了編寫一個組件的便利
- 無狀態組件不會像其它兩種方法同樣在調用時會建立新實例;它建立時始終保持了一個實例,避免了沒必要要的檢測和內存分配,坐到了內部的優化;
-
組件不能訪問this對象react
- 無狀態組件因爲沒有實例化過程,因此沒法訪問組件this中的對象,例如:this.state等均不能訪問。
- 組件沒法訪問生命週期的方法
二、React.createClass面試
- 建立有狀態的組件,這些組件是要被實例化的,而且能夠訪問組件的生命週期方法。
- 通常須要管理組件內部的狀態、使用生命週期方法或者進行this綁定會使用這種形式建立組件。
三、React.createClass與React.Component區別算法
-
函數this自綁定segmentfault
- React.createClass建立的組件,其每個成員函數的this都有React自動綁定;
- React.Component建立的組件,其成員函數不會自動綁定this,須要開發者手動bind綁定,不然this不能獲取當前組件實例對象。
- 組件屬性類型propTypes及其默認props、state屬性配置不一樣
const ItemComponent = React.createClass({
propTypes: {
name: React.PropTypes.string
},
getInitialState(){
return {
isLogin: false
}
},
getDefaultProps(){
return {
name: 'li'
}
}
render(){
return <div>{this.props.name}</div>
}
})
// VS
class ItemComponent extends React.Component {
static propTypes = {
name: PropTypes.string
};
static defaultProps = {
name: ''
};
constructor(props) {
super(props)
this.state = {
isLogin: false
}
}
render(){
return <div>{this.props.name}</div>
}
}
(六)說說React生命週期
(七)React中無論在生命狀況下只要調用了Reader方法,界面都會從新渲染嗎?
- 答:不必定
- 問:爲何呢?
- 答:。。。。(當時沒想到爲啥?但問了呢確定是有坑的)落落的回答了一點概念;
- 解答:React在調用render方法後只是構建出了虛擬DOM,以後還會經歷Diff算法的調和過程,找出最小差別樹,而後經過最少的DOM操做將其構建到真實的DOM中;
- 答:(恍悟,原來是問這個意思,趕忙補下)可是在render方法調用後,咱們該是沒有辦法對其進行渲染的阻止的;這些過程只能由React內部控制。
(八)問個簡單的CSS基礎,說說相對佈局和絕對佈局
(九)問下js基礎,數組的操做
-
不會改變原數組的方法:後端
- concat:拼接兩個數組,返回拼接後的數組;
- filter():接收一個函數做爲參數,數組中每一個元素執行函數,返回執行該函數時返回true的元素組成的數組。
- map: 返回執行函數後組成的數組;
- reduce:累加器;
- slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象
- forEach() 方法對數組的每一個元素執行一次提供的函數
- join() 方法將一個數組(或一個類數組對象)的全部元素鏈接成一個字符串並返回這個字符串。
-
會改變原數組跨域
- pop()刪除尾部元素,返回刪除的元素;
- push()添加尾部元素,返回數組長度;
- shift()刪除頭部元素,返回刪除的元素;
- unshift()網頭部添加元素,返回長度;
- splice()添加、刪除,
(十)你怎麼理解同源策略?
- 同源限制主要是爲了安全,若是沒有同源限制存在瀏覽器中的cookie等其餘數據能夠任意讀取,不一樣域下DOM任意操做,Ajax任意請求,這會有很嚴重的安全隱患;
- 爲了保護不一樣站點和用戶的隱私安全,個瀏覽器便制定了同源策略;
- 所謂同源即要求協議、域名、端口號徹底相同;
- 通常解決跨域的方式經常使用的有JSONP(只支持 GET 請求)、跨域資源共享CORS(服務器端經過設置Access-Control-Allow-Origin來進行的)、服務器端設置代理請求:服務器端不受同源策略限制
(十一)瀏覽器向服務器發送請求,有哪些請求方式
- 1)GET:獲取數據
- (2)POST:提交數據
- (3)HEAD:請求頭信息
- (4)PUT:上傳文檔到服務器
- (5)DELETE:刪除遠程服務器上的某個文檔
- (6)OPTION
(十二)你說你經常使用get、和post請求,說說區別
- 發送的請求數不同,get發送一個TCP數據包,post兩個;
- get向服務器請求數據,數據放於URL後相對不安全、post發送數據相對更加安全點;
- post數據發送大小大於get;但兩種都會有限制(瀏覽器和服務器都會限制)
(十三)狀態碼的話說說301和302的區別?
(十三)簡單的說說在瀏覽器中輸入一個RUL但顯示頁面的整個過程?
(十三)問些簡單的算法,就說說你所知道的排序算法吧?
(十四)對於你個數值(十進制)如何最快的知道它在二進制中有多少個1
- 恩恩,直接傳化爲二進制就知道啦?求解?????
- 給我耐心的講解了,當時懂了點,如今再多研究下吧
(十五)給你一塊正方體蛋糕,中間任意位置挖出一個小正方體,如何切一刀將它切成等分的兩半
整個過程CSS、Js沒怎麼問,感受側重於框架、網絡、算法這些;相比以前的面試問題沒有不少,就是涉及的比較廣,偏向於問實踐;而後面試官挺好的,不一樣的或者不足的都會給指出,給解釋
- 說一個禮拜左右給結果,恩恩~不過怎樣數據結構偏弱,補補再說!
大概能想起這麼多了