騰訊社招筆面試題

Jouryjc發表於2018-03-16

金三銀四,跳槽旺季,而我也不例外,日前正在物色新工作。

記得多少就分享多少,與你共勉。

筆試

通過正則去獲取cookie對應key的值。

function getValueByKey () {
    let cookie = "age=12;id=123;name=jouryjc",
        _reg = /(^|\s|;)id=([^;]*)(;|$)/
    
    if (cookie.match(_reg)) {
        console.log(cookie.match(_reg)[2]) #[";id=123;", ";", "123", ";", index: 6, input: "age=12;id=123;name=jouryjc"]
    } else {
        console.warn(`no match result`)
    }
}
getValueByKey ()
複製程式碼

主要考察的是正則的應用。/(^|\s|;)id=([^;]*)(;|$)/,()表示匹配項,如果匹配到了結果,match第一項返回整個匹配結果,後面依次是每個匹配項。不懂可以參考MDN

不定寬高的垂直水平居中(相容IE6)

跪了跪了,相容IE6。知道的童鞋麻煩在評論區指導一下。

用原生JS寫事件新增函式 function on(elem, type, handler),相容IE8,並將handler函式的上下文繫結到事件物件上。

function on(elem, type, handler) {
    if (elem.addEventListener) {
        elem.addEventListener(type, function () {
            handler.bind(elem)
        })
    } else {
        elem.attachEvent(type, function () {
            handler.bind(elem)
        })
    }
}
複製程式碼

這道題相對基礎。判斷addEventListener和attachEvent(相容IE8)就可以了。

使用ES6語法實現類、靜態屬性、靜態方法、私有方法、私有屬性、繼承

比較簡單的一道題,考察ES6 class,忘了的童鞋趕緊補課吧。

設計模式,寫三個以上你熟悉的設計模式,並且儘可能詳細的描述。

工廠模式、單例模式、模組模式、代理模式、職責鏈模式、策略模式、中介者模式.....推薦一篇個人認為比較nice的設計模式詳解

TCP三次握手圖文詳細描述

http/網路必考題,相信大家都懂的。

用node手寫一個服務,並輸出 hello, handsome boy!!!

const http = require('http');

const srv = http.createServer( (req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('hello, handsome boy!!!');
});
複製程式碼

so easy!

實現兩個超出(>Number.MAX_VALUE || < Number.MIN_VALUE)整數(含負數)相加函式function add(a, b)

沒有寫出來,本想順著二進位制(反碼、補碼等)做邏輯運算的思路去做,但無奈很多概念都忘了。bignumber.js,感興趣童鞋可以去看看原始碼。

面試

自我介紹都直接略過,直入專案:

說說你理解的前端工程化
跨域
ajax實現(state、readyState)
webpack原理
FileReader
物件deepCopy(JSON.parse(JSON.stringify())、廣度遍歷、遞迴))
flex佈局(flex-basis)
響應式佈局

相關文章