最近在網上沖浪的時候,看到一個非常抓人眼球的貼子。是一個程式設計師瘋狂跳槽漲薪,從2015年踏入職場,月薪僅4.5k,到如今年薪狂飆至58萬,嘖嘖。
一開始,他的收入就非常正常,年終總共攢下來5.85萬,是職場新人的普遍狀態。然而,從2016年開始,他直接開始狂飆。
先是跳到了月薪7.5k的新崗位,緊接著在2017年和2018年分別實作了11k和18k的月薪。到了2020年,月薪更是達到了22.5k。而在2024年,再次跳槽,月薪一舉達到了39k,年薪高達到了58.5萬!
看來,那句「 程式設計師漲薪最快的方式就是跳槽 」真不是吹的。這位網友的每一次跳槽,都給他帶來了質的飛躍。四年內跳了四次槽,每一次都能順利找到更好的崗位,確實有些讓人羨慕。
網友們對此也是褒貶不一。有人感嘆那時候行業的寬容,四次跳槽都能順風順水。
也有人調侃說一年一跳,簡歷都要寫不下了。
還有的網友分享了自己跳槽反而降薪的悲慘經歷,歸咎於大環境不好。
那麽,程式設計師究竟應該多久跳一次槽呢?這個問題沒有標準答案,具體看每人的情況。我覺得,3到5年換一次工作可能是最合理的節奏,既能避免止步不前,也能給個人成長留足空間。
下面是今日的大廠演算法題
今日演算法題 ,來自LeetCod e的第28題:找出字串中第一個匹配項的下標,下 面是我的演算法思路及實作,讓我們來看看吧。
# 演算法題目
給定一個字串 haystack 和一個目標子字串 needle,找出 needle 在 haystack 中第一次出現的下標。如果 needle 不是 haystack 的一部份,則返回 -1。
# 演算法思路
盡管不同的程式語言提供了不同的內建函式或方法來處理字串搜尋,基本思路是一致的:
遍歷主字串 haystack。
對於 haystack 中的每個字元,檢查從該位置開始的子字串是否與 needle 匹配。
如果找到匹配項,返回當前的索引。
如果遍歷完成後仍未找到匹配項,返回 -1。
# 程式碼實作
Java實作
Java 中的 String 類提供了 indexOf 方法:
public classSolution {
publicintstrStr(String haystack, String needle) {
return haystack.indexOf(needle);
}
}
JavaScript實作
JavaScript 提供了 indexOf 方法來簡化搜尋:
functionstrStr(haystack, needle) {
return haystack.indexOf(needle);
}
Go實作
Go 語言的 strings 包提供了 Index 函式來執行搜尋:
package main
import (
"fmt"
"strings"
)
funcstrStr(haystack string, needle string)int {
return strings.Index(haystack, needle)
}
funcmain() {
fmt.Println(strStr("hello", "ll")) // 輸出: 2
}
# 演算法解析
透過利用各自語言提供的內建函式或方法,我們可以非常簡便地實作字串中第一個匹配項的搜尋。這些方法通常經過了最佳化,能夠提供較好的效能。不過,在底層,這些實作依然遵循了上述的演算法思路。
# 範例和測試
對於輸入 haystack = "hello" 和 needle = "ll",期望的輸出應該是 2,因為 needle 第一次出現在 haystack 的下標 2 位置。
Java 測試程式碼:
public classMain {
publicstaticvoidmain(String[] args) {
Solution solution = new Solution();
System.out.println(solution.strStr("hello", "ll")); // 輸出: 2
}
}
JavaScript 測試程式碼:
console.log(strStr("hello", "ll")); // 輸出: 2
Go 測試程式碼:
funcmain() {
fmt.Println(strStr("hello", "ll")) // 輸出: 2
}
# 總結
找出字串中第一個匹配項的下標是一個常見的編程任務,可以透過利用JavaScript、Java和Go語言中提供的內建函式或方法來簡化實作。
熱門推薦