1. 程式人生 > 實用技巧 >第一次前端實習生面試的經驗分享

第一次前端實習生面試的經驗分享

前言
12月第一次得到位元組的前端面試機會,結果一手抓考試一手抓面試,考試考的還不錯,結果面試還是準備不充分,第一回合就掛了,當時面完整個人是懵的。現在比較閒了,記錄一下當時面試的一些問題。

網路知識

1. 跨域問題是什麼,怎麼解決跨域問題

跨域是因為瀏覽器的同源政策造成的,瀏覽器會限制不同源(包括域名、埠、協議)的XHR請求,因此不同來源的img、js指令碼不會被瀏覽器攔截,但是XHR請求會被攔截。

解決方案:

  1. 傳送JSONP請求代替JSON資料,不推薦,因為只能使用GET請求,服務端還需修改程式碼;
  2. 使用Nginx進行反向代理,即讓瀏覽器訪問Nginx伺服器即可,只需要配置Nginx,在前端的請求中修改請求路徑即可;(當時只會這個)
  3. 使用CORS請求,可以參考http://www.ruanyifeng.com/blog/2016/04/cors.html

2. GET和POST的區別

相對來說基礎的東西,簡單來說GET用來請求資料,POST用來提交資料,雖然GET可以用引數來提交一些東西,但是會放在URL裡,因此不要用GET傳送敏感資訊,儘量還是用POST請求提交資料。

CSS、JS

1. 垂直居中怎麼實現

  1. 高度已知:
        .father {
            position: relative;
            background-color: aqua;
            height: 300px;
        }
        
        .son {
            position: absolute;
            background-color: brown;
            height:100px
            bottom: 0;
            top: 0;
            margin: auto;
        }

這裡是使用絕對定位,將子元素上下邊沿緊貼父元素,然後再用margin:auto來讓子元素實現垂直居中。

2.高度未知:

        .father {
            display: flex;
            background-color: aqua;
            height: 300px;
            align-items: center;
        }
        
        .son {
            background-color: brown;
        }

使用flex佈局,然後align-items為center,讓子元素在交叉軸(預設縱向)上的佈局為居中。

        .father {
            background-color: aqua;
            height: 300px;
        }
        .father::after{
            content: '';
            display: inline-block;
            vertical-align: middle;
            height: 100%;
        }
        .son {
            display: inline-block;
            background-color: brown;
        }

這裡是使用display:inline-block的方法,讓子元素成為一行,然後再插入after偽元素,並且讓偽元素高度佔滿整個高度,這樣看起來子元素就是垂直居中的。

2. JavaScript的EventLoop

console.log('a');
setTimeout(function () {
    console.log('b');
    new Promise(function (resolve) {
        console.log('c');
        resolve();
    }).then(function () {
        console.log('d')
    })
})
new Promise(function (resolve) {
    console.log('e');
    resolve();
}).then(function () {
    console.log('f')
})

問列印的順序,看這個就明白了https://mp.weixin.qq.com/s/UBCa-kYgSLk6_4XCP-EzGg

演算法

1. 排序,二叉樹遍歷

沒啥說的,會就行。

2. leetcode 887

https://leetcode-cn.com/problems/super-egg-drop/

先二分查詢,如果第一個雞蛋碎了,那麼就再逐個遍歷嘗試即可。

總結

個人來說,演算法這邊太不熟練了,約莫一年沒做過演算法題連快排也忘了,在這裡吃了大虧。

題目難度來說還算簡單的,就是大概測試一下一些基礎內容。