Algorithm
func findNumberOfLIS(nums []int) (ans int) {
maxLen := 0
n := len(nums)
dp := make([]int, n)
cnt := make([]int, n)
for i, x := range nums {
dp[i] = 1
cnt[i] = 1
for j, y := range nums[:i] {
if x > y {
if dp[j]+1 > dp[i] {
dp[i] = dp[j] + 1
cnt[i] = cnt[j] // 重置計數
} else if dp[j]+1 == dp[i] {
cnt[i] += cnt[j]
}
}
}
if dp[i] > maxLen {
maxLen = dp[i]
ans = cnt[i] // 重置計數
} else if dp[i] == maxLen {
ans += cnt[i]
}
}
return
}
Review
gRPC Go Microservice
文章介紹了一個簡單的go gRPC的hello world項目搭建過程。
TIP
工作過程使用了go標準庫的rwMutex,能夠減少讀操作的鎖顆粒度。
- 讀鎖和讀鎖之間不互斥。
- 讀寫和寫鎖之間互斥。
- 寫鎖和寫鎖之間互斥。
Share
作為面試官如果在面試過程遇到求職者的項目經歷或者技術背景是自己不熟悉的方面,要怎么通過問答看出求職者的能力水平呢?
我個人的做法是做一個傾聽者,讓求職者詳細介紹自己的項目經歷,這個過程可以提出如下問題:
- 向我這個小白闡述一下這個項目/技術。這個問題能夠考察求職者對項目/技術的理解深度,如果你能用大白話向一個小白解釋清楚你的專業(yè)領域,那么就說明你一定程度看透了這個領域的本質。
- 這個項目的整體技術&業(yè)務架構,為什么這樣子設計? 這個問題考察求職者的整體設計能力和技術選型能力。
- 項目中你遇到的最難的問題或者你覺得最有技術難度的部分,詳細描述一下問題、難點在哪里、以及你最終怎么解決這個的。這部分能夠考察求職者的技術深度,遇到問題之后的定位&解決能力。