滴滴面試後!很痛但💗

在這近期這段時間內,我面試了兩次滴滴(先後兩個不一樣的部門),也面試了一些小公司,這些面試對個人幫助是很大的,不僅是爲了一份實習生的工做,一次又一次的面試後個人心態上愈加平穩,也發現了本身在學習上的一些缺陷,一直也沒對其進行一次系統的總結,這篇文章就用來總結下個人感觸和領悟吧!前端

滴滴的面試是比較有表明性的,這篇文章就以滴滴的面試內容與面試官反饋爲主來引入吧!es6

1. 滴滴面試的內容

第一次

基礎部分:面試

  • 原型鏈
  • 做用域提高,變量提高
  • 執行上下文和執行棧
  • 事件循環機制Eventloop
  • this的指向問題

一道思路講解:算法

  • 不用if-else,switch,或>,<等比較大小的符號,總分爲100的考試,獲得學生的等級(90-100爲一等生,80-90爲二等生,以此類推),我說的思路是求餘,大佬們在評論區給給思路😃

寫代碼部分:後端

  • leetcode 227題 基本計算器II
  • 版本號比較大小(按部就班的慢慢提出新問題,並解決)

第二次

不得不說第二次的面試官很是好,不會太有壓力,其面試的風格也不同(我甚至能現場查文檔百度😜)。瀏覽器

前半部分

介紹本身的項目,而後面試官會找出一些項目的問題來叫你解決,不會很難,也許就是佈局的一些缺陷。服務器

後半部分

面試官出了一道題(不會很難),你來獲得結果,而後叫使用另外一種方法,另外一種思路實現,最後再叫簡化代碼,將代碼壓縮到使用一行就實現功能。這裏面試官主要是看看我寫代碼的習慣和思路。微信

簡單刨析下面試題

第一次的面試官面試時面了我一個多小時,大概就是半個小時JS基礎的考察加上半小時手寫代碼的考察,JS基礎部分就不在這裏總結了,推薦你們面試前必定多看看《你不知道的Javascript上冊》,下面說說第一次的幾個手寫題和後面第二次的一些項目上被挑出來的缺點,與改進。版本號比較的就不寫了,這是一個面試中用於層層遞進的考察題。markdown

1.基本計算器題目

題目:1 <= s.length <= 3 * 105, s 由整數和算符 ('+', '-', '*', '/') 組成,中間由一些空格隔開 s 表示一個 有效表達式 表達式中的全部整數都是**非負整數**,且在範圍 [0, 231 - 1] 內 題目數據保證答案是一個 32-bit 整數。antd

思路:咱們能夠用一個棧,保存這些(進行乘除(分優先級)運算後的)整數的值。對於加減號後的數字,將其直接壓入棧中;對於乘除號後的數字,能夠直接與棧頂元素計算,並替換棧頂元素爲計算後的結果。

var calculate = function(s) {
    // s=s.trim();//去除兩邊的空格
    const stack=[];//數值棧
    let sign='+';//符號
    let ans=0;//累加和
    s = s.replace(/\s/g, '')
    for(let i=0 ; i<s.length ; i++ ){
        let num ='';
        //判斷是不是符號
        if(s[i]<'0'){
            sign=s[i];
        }else{
            while(s[i]>='0'&&i<s.length){
                num=num+s[i];
                i++;//這裏是用於組合兩位數以上的值
            }
            i--;//若是上面跳出來了就多了一次,最大是s.length
            //接下來,把數據壓入棧
            num=Number(num);
            switch(sign){
                case '+':stack.push(num);
                break;
                //減法化爲負數
                case '-':stack.push(-num);
                break;
                //乘除就與棧頂元素進行運算再壓入棧
                case '*':stack.push(stack.pop()*num);
                break;
                case '/':
                    stack.push(stack.pop() / num | 0);
                //注意這|的用法,它能獲得一個整數
            }
        }
    }
    //最後只須要累加
    while(stack.length){
        ans+=stack.pop();
    }
    return ans;
};
複製代碼

2.項目優化改錯

拋出張圖:

image.png

這裏我的主頁我用了flex佈局使頭像和用戶名位於同一行,可是屏幕寬度發生變化後,圓形頭像變成了橢圓形。面試官老師就叫我改屬性解決這個問題。(這個頁面的圖我也是切的過於粗暴,慚愧慚愧)

image.png

到這裏就不得很少說一句,flex屬性必定要爛記於心。。。由於個人頁面用的都是antd的UI組件,剛開始我還覺得是組件的什麼屬性沒有設置好,就去antd文檔那看,最後沒發現問題,而後面試官就引導我到頁面使用瀏覽器的開發者工具來檢查,最後發現是flex的屬性flex-shrink的問題,因而給頭像盒子加了個flex-shrink:0,使頭像變回圓形(但仍是存在不少問題的,好比頭像變回了圓形卻沒有同步縮小,屏幕變小了,頭像大小卻沒變)。

image.png

這裏介紹下flex-shrink屬性:
flex-shrink(定義了項目的縮小比例)
屬性值:任意正數值,小數,整數,負值是不被容許的。默認爲1
默認爲1,即若是空間不足,該項目將縮小。
若是全部項目的flex-shrink屬性都爲1,當空間不足時,都將等比例縮小。
若是一個項目的flex-shrink屬性爲0,其餘項目都爲1,則空間不足時,前者不縮小。
注意:flex-shrink的寬度的縮小的分配是使用加權運算的。能夠看看這裏,flex-shrink的寬度分配

而後還有一點,就是我項目的首頁的側邊欄的標籤,上下挨的太近了。

image.png

因而調了下margin-top值。

image.png

項目在介紹後就給現場改了下這些錯,個人項目仍是太糙了,作一個項目必定要奔着能拿出來用的想法去,多方面都要考慮到位。

3.第二次滴滴面試時寫的代碼

題目:

QQ圖片20210417094832.png

這道題不難,面試官想看看咱們的代碼習慣了思路怎麼樣。

  • 第一步,面試官叫我經過'a.b.c'與obj獲得c的值。

常規得法:

let obj = {
    a: {
        b: {
            c: 666
        }
    }
}
let str = 'a.b.c'//先獲得'a.b.c' 再獲得 'a.f.c'要返回錯誤

function getData(obj, str) {
    let arr=str.split('.');
     for(let i=0;i<arr.length;i++){   
        obj=obj[arr[i]]
     }
     return obj;
}
console.log(getData(obj, str)) //666
複製代碼

剛開始我用了一步很粗暴得方法😏

function getData(obj, str) {
    return eval(`obj.${str}`);//直接運行字符串,一步到位,太粗暴簡單了
}
複製代碼
  • 第二步,考慮a.f.c這樣的狀況,即混入不存在的屬性。
function getData(obj, str) {
    let arr=str.split('.');
    for(let i=0;i<arr.length;i++){
       if(!(obj=obj[arr[i]])){
           return false;
       };
    }
    return obj;
}
複製代碼
  • 第三步使用es6裏的迭代器,好比reduce,將代碼寫成一行就獲得結果
function getData(obj, str) {
    return str.split('.').reduce((x,y)=>(x?x[y]:x),obj);
    //運用三元運算符判斷,若是是a.f.c,就返回的是undefined
}
複製代碼

2.面試注意點總結

我面試的都是實習生崗位,不少公司對實習生的招聘是很看重基礎的,必定要把基礎打牢

下面我將總結個人血的教訓帶來的面試經驗總結😭

開頭自我介紹

面試官一半開頭都會叫咱們先自我介紹,記得剛開始第一次面試時,我只介紹說,我是某某大學,大三學生,想應聘前端實習生,學前端一兩年了,而後沒了。。。尷尬😱。
這個以後,不出意料,面試官就會問你,你是什麼專業的,你以爲你前端哪方面學的最好這樣的。

後來我就反思了下,面試官不瞭解你,他須要經過你的自我介紹來了解你,一個完整的自我介紹是對面試官的基本尊重。

我如今通常是這樣介紹的:個人學校+個人專業+大三在讀+學習裏學的重點課程+本身在校狀況,拿過什麼獎之類+爲何選擇前端+前端學的怎麼樣,都會哪些[+本身平時是否有在寫技術博客這樣總結的習慣]+本身作了什麼項目

面試時被考察時

這個我又血的教訓。。。😭

在面試時,不要說你之前好像作過好像會多是這樣,這種的模糊字眼,這樣有點令人感受沒有準備好就參加了面試,這確定是影響面試官心態的,面試官想看到的是能理性解決問題的人,若是面試官提的問題你會,你就沉穩的組織答案,爲面試官理性分析,若是你不會,那你也不能放棄,你也許能夠向面試官詢問點提示,本身推斷下答案,要充滿熱情的對待問題去解決,而不是逃避,面試官有和我說,他們出的問題都會介於咱們會與不會之間,你會就繼續深刻,總會問到不會的地方,咱們須要帶着探索的心態和熱情去尋找答案,看咱們解決問題的習慣。

另外,在平時也要多學習,積攢知識,才能應對的了。。😥,建議多看看阮一峯的博客,和掘金訝羽,神三元等衆多大佬的博客,但也別脫離了系統的書籍方面的學習基礎知識點。(好多要看😆)

另外面試時算法和源碼也是重頭戲,平時必須多刷刷這些(卑微筆者,一直在膜拜算法和源碼,正在努力)。

介紹項目

先說說咱們應該怎樣的項目吧!
我第二次面滴滴的那個面試官老師,在我問他什麼樣的項目能獲得他們的青睞時,他就說,若是是本身想法作出來的就很好,好比是解決本身身邊事情的項目。好比面試官老師本身,他說他大三時作了一個能實時顯示寢室電費餘額的項目,由於他們學校只有特定的兩天才能充電費,若是錯過了,電費用完了就沒電用,就要等到能充費的那天才能充費用電

這樣的項目能體現出咱們對技術的熱情
而且,咱們作項目必定要有個作出來就能用的想法,要細緻,頁面佈局要細緻,功能要完善,這個項目最後也許會接觸到先後端編碼,以及搭建服務器等等,你接觸到的技術棧就會特別豐富。

怎麼介紹項目:
項目怎麼來的 + 解決了什麼問題,想作成什麼 + 說說項目裏的需求, + 使用了什麼技術棧,採用了什麼行動方式,具體作了哪些工做內容 + 有哪些難點,怎麼解決的 + 結果如何,有什麼體會總結

我以爲這篇就很詳細:STAR法則

唉,我還要繼續努力,努力,繼續寫項目,作題目,學習知識點,認認真真的寫一些總結文章,如今的我有點菜。。。最後說一句,第二次滴滴面試遇到的面試官老師真的好。

筆者如今正在找一份前端實習的工做,wx:xieHB-frontend-178,加個微信一塊兒學習😜,但願有大佬給個內推,哈哈!

相關文章
相關標籤/搜索