1. 程式人生 > 實用技巧 >面試阿里巴巴前端開發工程師筆試部分

面試阿里巴巴前端開發工程師筆試部分

一、筆試部分 (電話面部分還在整理,後續發出來)

介紹:
1) 最近挑戰了下阿里和騰訊;偶爾階段性的去面面試,個人覺得能對自己很好的檢驗,知道自己的不足,有沒有和潮流技術脫軌等;
2) 以下解法為後面自己優化過的... 有問題或有不對之處歡迎指正
3) 筆試時,瀏覽器頁面左邊是編碼區域,右邊是視訊區域,和麵試官視訊...
4) 內建編輯器相當於用記事本編碼,沒有語法自動補全及提示,也不能執行除錯;並且瀏覽器不能切換標籤(不能百度)... 考驗js功底

要求:
1) 筆試時間: 40分鐘
2) 筆試題目: 3道題,由易到難
3) 筆試要求: 需要使用線上編輯器編寫,筆試是實時通訊,考官可以一直看到你的程式碼進度。不切換瀏覽器頁籤,不線上搜尋原生函式的使用方式
4) 筆試懲罰: 1)未使用線上編輯器,以不通過處理 2)一旦發現作弊,永久錄入黑名單

1. 實現一個函式,輸入一個單詞,返回輸入單詞是否符合全大寫、全小寫、首字母大寫規則,正確返回true,錯誤返回false

const checkValid = (word) => {
    let toU = word.toLocaleUpperCase();
    let toL = word.toLocaleLowerCase();
    let initialsToU = word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase();
    if (initialsToU === word || toU === word || toL === word) {
      return true
    } else {
      return false
    }
    console.log(checkValid('china'))
}

2. 實現一個方法,陣列為升序返回1,陣列為降序返回-1,亂序返回0

const isSorted = (arr) => {
    let target = arr.toString().replace(/,/g, '')
    let riseTarget = arr.sort((a, b) => {
      return a - b
    }).toString().replace(/,/g, '')
    let dropTarget = arr.sort((a, b) => {
      return b - a
    }).toString().replace(/,/g, '')
    if (target === riseTarget) {
      return 1
    } else if (target === dropTarget) {
      return -1
    } else {
      return 0
    }
}
console.log(isSorted([3, 2, 1, 0]))

3. 實現一個節流函式, 它返回一個新函式,新函式即時連續多次執行, 在wait的時間執行一次。並要求此節流函式第一次執行就會執行fn

const throttle = (fn, wait) => {
    let isNext = true;
    return () => {
      if (!isNext) return;
      isNext = false;
      setTimeout(() => {
        fn()
        isNext = true;
      }, wait)
    }
}
window.addEventListener("resize", throttle(() => console.log('我是節流函式'), 1000))