日問週刊 全棧面試彙總 第二期

2021-09-29 17:36:23 字數 3680 閱讀 8936

勤學如春起之苗,不見其增,日有所長;輟學如磨刀之石,不見其損,日有所虧。

我在 github 上新建了乙個倉庫 日問,每天至少乙個問題。有關全棧,graphql,devops,微服務以及軟技能,促進職業成長,歡迎交流。

以諸葛武侯的誡子書與君共勉

夫君子之行,靜以修身,儉以養德。非澹泊無以明志,非寧靜無以致遠。夫學須靜也,才須學也,非學無以廣才,非志無以成學。淫慢則不能勵精,險躁則不能治性。年與時馳,意與日去,遂成枯落,多不接世,悲守窮廬,將復何及!

**搜尋引擎

開放問題,不過你至少得知道乙個發行版...

一般採用漏桶演算法:

漏桶初始為空

api 呼叫是在往漏桶裡注水

漏桶會以一定速率出水

水滿時 api 拒絕呼叫

可以使用redis的計數器實現

計數器初始為空

api 呼叫計數器增加

給計數器設定過期時間,隔段時間清零,視為一定速率出水

計數器達到上限時,拒絕呼叫

當然,這只是大致思路,這時會有兩個問題要注意

最壞情況下的限流是額定限流速率的2倍

條件競爭問題

最簡單的bind一行就可以實現,而在實際面試過程中也不會考察你太多的邊界條件

function.prototype.fakebind = function(obj)
測試一下

function f (arg) 

// output: 3, 4

f.bind()(4)

// output: 3, 4

f.fakebind()(4)

ifconfig是最簡單最常用,但是列印資訊太多了

$ ifconfig
netstatip也挺好用,特別是它們還可以列印路由表

$ netstat -i
$ ip link

$ ip addr

redis處維護乙個物件,記錄每個 group 所對應的connections/sockets

當 client 剛連入 server 時,便加入某個特定的組,或者叫 room,比如 student01,剛開始連入 server,可能要加入 room:student:01class:201901group:10086

【q028】在linux中如何獲取登入的使用者

$ who

$ last

fingerprintjs2

一圖勝千言

使用jsonb_pretty函式,示例如下

乙個簡單的promise的粗糙實現,關鍵點在於

pending時,thenable函式由乙個佇列維護

當狀態變為resolved(fulfilled)時,佇列中所有thenable函式執行

resolved時,thenable函式直接執行

rejected狀態同理

class prom 

return new prom(resolve => resolve(value))

} constructor (fn) ) => res(fn(value)))})}

const reject = (e) => ) => rej(fn(e)))})}

fn(resolve, reject)

} then (fn)

if (this.status === 'pending') ) })}

} catch (fn)

if (this.status === 'pending') ) })}

}}prom.resolve(10).then(o => o * 10).then(o => o + 10).then(o => )

return new prom((resolve, reject) => reject('error')).catch(e => )

首參不一樣,直接上 api

react.cloneelement(

element,

[props],

[...children]

)react.createelement(

type,

[props],

[...children]

)

它一般可以使用第三方庫 clipboard.js 來實現,原始碼很簡單,可以讀一讀

主要有兩個要點

選中複製

選中主要利用了 selection api

選中的**如下

const selection = window.getselection();

const range = document.createrange();

range.selectnodecontents(element);

selection.removeallranges();

selection.addrange(range);

selectedtext = selection.tostring();

取消選中的**如下

window.getselection().removeallranges();
它有現成的第三方庫可以使用: select.js

複製就比較簡單了,execcommand

document.exec('copy')

Python 全棧 191 問(附答案)

作為程式設計師,你的電腦裡 書架上,一定少不了 python 的資料和課程。免費的電子書,花錢買的課,實體書籍.現在想一下,你真正從中學到多少 python 全棧 60 天精通之路 這個專欄 day1 day38 就已經完整解決下面的191個問題,day39 day61 精彩繼續.而現在訂閱它只需七...

大廠面試中常問的棧排序

很多大廠的筆試題中都會要求面試者寫一段棧排序,因為棧這個資料結構平時我們用的比較少,導致很多面試者一下子都有點懵逼,這裡就來給大家解惑一下吧 題目 乙個棧中有10個隨機大小的元素,這個是初始棧 可以讓你申請乙個空棧作為交換使用 不准使用任何其他資料結構進行儲存 最終按照從小到大的順序輸出原始棧 思路...

Java高階面試必問 Dubbo面試題彙總

1 預設使用的是什麼通訊框架,還有別的選擇嗎?2 服務呼叫是阻塞的嗎?3 一般使用什麼註冊中心?還有別的選擇嗎?4 預設使用什麼序列化框架,你知道的還有哪些?5 服務提供者能實現失效踢出是什麼原理?6 服務上線怎麼不影響舊版本?7 如何解決服務呼叫鏈過長的問題?8 說說核心的配置有哪些?9 dubb...