華為OD薪資待遇一覽表。。
共 9812字,需瀏覽 20分鐘
·
2024-04-13 14:44
大家好,我是二哥呀。
對(duì)于短期內(nèi)沒有更好的選擇,去不了大廠,但又不太想去不知名的小廠,或者外包的話,華為 OD 是一個(gè)不錯(cuò)的過(guò)渡選擇,別架著自己,高不成低不就是最難受的。
-
有的人高瞻遠(yuǎn)矚,且能力很強(qiáng),就可以一直踐行自己的目標(biāo)。 -
有的人隨波逐流,但運(yùn)氣很好,也可以一直順風(fēng)順?biāo)?,平步青云? -
有的人想很多,但實(shí)力不太夠,就經(jīng)常在挫敗和努力奮斗中掙扎,反而更難受。
對(duì)于有 gap 期、學(xué)歷夠得上門檻的同學(xué)來(lái)說(shuō),我覺得 OD 是可以去的。別委屈自己,也別看不起 OD,鞋子適不適合只有腳知道。我之前在《Java 面試指南-華為 OD 面經(jīng)》中統(tǒng)計(jì)過(guò)一波各個(gè)地區(qū) OD 的薪資待遇,大家可以作為參考。
然后我們?cè)僖浴禞ava 面試指南》中同學(xué) 1 的面試內(nèi)容為例,來(lái)看看華為 OD 的面試官都喜歡問(wèn)哪些問(wèn)題。
可以看得出,仍然是圍繞著二哥一直給大家強(qiáng)調(diào)的 Java 后端四大件展開,并且難度不大。內(nèi)容較長(zhǎng),建議大家先收藏起來(lái),面試的時(shí)候大概率會(huì)碰到,我會(huì)盡量用通俗易懂+手繪圖的方式,讓天下所有的面渣都能逆襲 ??
1、二哥的 Linux 速查備忘手冊(cè).pdf 下載 2、三分惡面渣逆襲PDF離線版:https://t.zsxq.com/04FuZrRVf 3、三分惡面渣逆襲在線版:https://javabetter.cn/sidebar/sanfene/nixi.html
華為 OD面經(jīng)(挺細(xì)節(jié))
用過(guò)哪些MySQL函數(shù)?
MySQL支持很多內(nèi)置函數(shù),包括執(zhí)行計(jì)算、格式轉(zhuǎn)換、日期處理等。我說(shuō)一些自己常用的。
-
CONCAT(): 連接兩個(gè)或多個(gè)字符串。 -
LENGTH(): 返回字符串的長(zhǎng)度。 -
SUBSTRING(): 從字符串中提取子字符串。 -
REPLACE(): 替換字符串中的某部分。 -
NOW(): 返回當(dāng)前的日期和時(shí)間。 -
SUM(): 計(jì)算數(shù)值列的總和。 -
AVG(): 計(jì)算數(shù)值列的平均值。 -
COUNT(): 計(jì)算某列的行數(shù)。 -
MAX()和MIN(): 分別返回列中的最大值和最小值。
-- 連接字符串
SELECT CONCAT('沉默', ' ', '王二') AS concatenated_string;
-- 獲取字符串長(zhǎng)度
SELECT LENGTH('沉默 王二') AS string_length;
-- 提取子字符串
SELECT SUBSTRING('沉默 王二', 1, 5) AS substring;
-- 替換字符串內(nèi)容
SELECT REPLACE('沉默 王二', '王二', 'MySQL') AS replaced_string;
Linux 使用過(guò)哪些命令
我自己常用的 Linux 命令有 top 查看系統(tǒng)資源、ps 查看進(jìn)程、netstat 查看網(wǎng)絡(luò)連接、ping 測(cè)試網(wǎng)絡(luò)連通性、find 查找文件、chmod 修改文件權(quán)限、kill 終止進(jìn)程、df 查看磁盤空間、free 查看內(nèi)存使用、service 啟動(dòng)服務(wù)、mkdir 創(chuàng)建目錄、rm 刪除文件、rmdir 刪除目錄、cp 復(fù)制文件、mv 移動(dòng)文件、zip 壓縮文件、unzip 解壓文件等等這些。
文件操作的命令有哪些?
-
ls:列出目錄內(nèi)容。ls -l顯示詳細(xì)信息,ls -a顯示隱藏文件。 -
cd:更改當(dāng)前目錄。cd ..回到上級(jí)目錄,cd ~回到用戶的主目錄。 -
pwd:顯示當(dāng)前工作目錄的完整路徑。 -
cp:復(fù)制文件或目錄。cp source_file target_file復(fù)制文件,cp -r source_directory target_directory復(fù)制目錄。 -
mv:移動(dòng)或重命名文件或目錄。 -
rm:刪除文件或目錄。rm -r遞歸刪除目錄及其內(nèi)容。 -
mkdir:創(chuàng)建新目錄。 -
cat:查看文件內(nèi)容。cat file1 file2合并文件內(nèi)容顯示。
系統(tǒng)管理的命令有哪些?
-
ps:顯示當(dāng)前運(yùn)行的進(jìn)程。ps aux顯示所有進(jìn)程。 -
top:實(shí)時(shí)顯示進(jìn)程動(dòng)態(tài)。 -
kill:終止進(jìn)程。kill -9 PID強(qiáng)制終止。 -
df:顯示磁盤空間使用情況。df -h以易讀格式顯示。 -
du:顯示目錄或文件的磁盤使用情況。 -
free:顯示內(nèi)存和交換空間的使用情況。 -
chmod:更改文件或目錄的權(quán)限。 -
chown:更改文件或目錄的所有者和所屬組。
網(wǎng)絡(luò)管理的命令有哪些?
-
ping:檢查與遠(yuǎn)程服務(wù)器的連接。 -
wget:從網(wǎng)絡(luò)上下載文件。
壓縮和解壓的命令有哪些?
-
tar:打包或解包.tar文件。tar cvf archive.tar files打包,tar xvf archive.tar解包。 -
gzip/gunzip:壓縮或解壓.gz文件。 -
zip/unzip:壓縮或解壓.zip文件。
查找文件的命令有哪些?
-
find:在目錄樹中查找文件。find /directory/ -name filename。
chmod 的參數(shù)講一下?
chmod 命令在 Linux 中用來(lái)改變文件或目錄的訪問(wèn)權(quán)限。這個(gè)命令的使用可以基于符號(hào)表示法(也稱為文本方法)或者八進(jìn)制數(shù)表示法。
像 chmod 777 file 賦予文件所有權(quán)限,就屬于八進(jìn)制數(shù)表示法。7=4+2+1,分別代表讀、寫、執(zhí)行權(quán)限。
Linux 中的權(quán)限可以應(yīng)用于三種類別的用戶:
-
文件所有者(u) -
與文件所有者同組的用戶(g) -
其他用戶(o)
①、符號(hào)模式
符號(hào)模式使用字母來(lái)表示權(quán)限,如下:
-
讀(r) -
寫(w) -
執(zhí)行(x) -
所有(a)
例如:
-
chmod u+w file:給文件所有者添加寫權(quán)限。 -
chmod g-r file:移除組用戶的讀權(quán)限。 -
chmod o+x file:給其他用戶添加執(zhí)行權(quán)限。 -
chmod u=rwx,g=rx,o=r file:設(shè)置文件所有者具有讀寫執(zhí)行權(quán)限,組用戶具有讀執(zhí)行權(quán)限,其他用戶具有讀權(quán)限。
②、數(shù)字模式
數(shù)字模式使用三位八進(jìn)制數(shù)來(lái)表示權(quán)限,每位數(shù)字代表不同的用戶類別(所有者、組、其他用戶),數(shù)字是其各自權(quán)限值的總和:
-
讀(r)= 4 -
寫(w)= 2 -
執(zhí)行(x)= 1
因此,權(quán)限模式可以是從 0(無(wú)權(quán)限)到 7(讀寫執(zhí)行權(quán)限)的任何值。
-
chmod 755 file:使得文件所有者有讀寫執(zhí)行(7)權(quán)限,組用戶和其他用戶有讀和執(zhí)行(5)權(quán)限。 -
chmod 644 file:使得文件所有者有讀寫(6)權(quán)限,而組用戶和其他用戶只有讀(4)權(quán)限。
對(duì)于多線程編程的了解?
多線程編程涉及到兩個(gè)非常重要的概念,一個(gè)是進(jìn)程,一個(gè)是線程。
進(jìn)程說(shuō)簡(jiǎn)單點(diǎn)就是我們?cè)陔娔X上啟動(dòng)的一個(gè)個(gè)應(yīng)用,比如我們啟動(dòng)一個(gè)瀏覽器,就會(huì)啟動(dòng)了一個(gè)瀏覽器進(jìn)程。進(jìn)程是操作系統(tǒng)資源分配的最小單位,它包括了程序、數(shù)據(jù)和進(jìn)程控制塊等。
線程說(shuō)簡(jiǎn)單點(diǎn)就是我們?cè)?Java 程序中啟動(dòng)的一個(gè) main 線程,一個(gè)進(jìn)程至少會(huì)有一個(gè)線程。當(dāng)然了,我們也可以啟動(dòng)多個(gè)線程,比如說(shuō)一個(gè)線程進(jìn)行 IO 讀寫,一個(gè)線程進(jìn)行加減乘除計(jì)算,這樣就可以充分發(fā)揮多核 CPU 的優(yōu)勢(shì),因?yàn)?IO 讀寫相對(duì) CPU 計(jì)算來(lái)說(shuō)慢得多。線程是 CPU 分配資源的基本單位。
一個(gè)進(jìn)程中可以有多個(gè)線程,多個(gè)線程共用進(jìn)程的堆和方法區(qū)(Java 虛擬機(jī)規(guī)范中的一個(gè)定義,JDK 8 以后的實(shí)現(xiàn)為元空間)資源,但是每個(gè)線程都會(huì)有自己的程序計(jì)數(shù)器和棧。
多線程并發(fā)是指系統(tǒng)有處理多個(gè)任務(wù)的能力,但是任意時(shí)刻只有一個(gè)任務(wù)在執(zhí)行。在單核處理器上,多個(gè)任務(wù)是通過(guò)時(shí)間片輪轉(zhuǎn)的方式實(shí)現(xiàn)的。但這種切換非常快,給人感覺是在同時(shí)執(zhí)行。
仿佛是在并行執(zhí)行。
并行是指多個(gè)處理器同時(shí)執(zhí)行多個(gè)任務(wù),每個(gè)核心實(shí)際上可以在同一時(shí)間獨(dú)立地執(zhí)行不同的任務(wù)。
通常我們會(huì)使用線程池來(lái)管理線程,提高線程的使用效率。
線程池創(chuàng)建的幾個(gè)核心參數(shù)?
線程池有 7 個(gè)參數(shù),需要重點(diǎn)關(guān)注corePoolSize、maximumPoolSize、workQueue、handler 這四個(gè)。
我一一說(shuō)一下:
①、corePoolSize
定義了線程池中的核心線程數(shù)量。即使這些線程處于空閑狀態(tài),它們也不會(huì)被回收。這是線程池保持在等待狀態(tài)下的線程數(shù)。
②、maximumPoolSize
線程池允許的最大線程數(shù)量。當(dāng)工作隊(duì)列滿了之后,線程池會(huì)創(chuàng)建新線程來(lái)處理任務(wù),直到線程數(shù)達(dá)到這個(gè)最大值。
③、keepAliveTime
非核心線程的空閑存活時(shí)間。如果線程池中的線程數(shù)量超過(guò)了 corePoolSize,那么這些多余的線程在空閑時(shí)間超過(guò) keepAliveTime 時(shí)會(huì)被終止。
④、unit
keepAliveTime 參數(shù)的時(shí)間單位:
-
TimeUnit.DAYS; 天 -
TimeUnit.HOURS; 小時(shí) -
TimeUnit.MINUTES; 分鐘 -
TimeUnit.SECONDS; 秒 -
TimeUnit.MILLISECONDS; 毫秒 -
TimeUnit.MICROSECONDS; 微秒 -
TimeUnit.NANOSECONDS; 納秒
⑤、workQueue
用于存放待處理任務(wù)的阻塞隊(duì)列。當(dāng)所有核心線程都忙時(shí),新任務(wù)會(huì)被放在這個(gè)隊(duì)列里等待執(zhí)行。
⑥、threadFactory
一個(gè)創(chuàng)建新線程的工廠。它用于創(chuàng)建線程池中的線程。可以通過(guò)自定義 ThreadFactory 來(lái)給線程池中的線程設(shè)置有意義的名字,或設(shè)置優(yōu)先級(jí)等。
⑦、handler
拒絕策略 RejectedExecutionHandler,定義了當(dāng)線程池和工作隊(duì)列都滿了之后對(duì)新提交的任務(wù)的處理策略。常見的拒絕策略包括拋出異常、直接丟棄、丟棄隊(duì)列中最老的任務(wù)、由提交任務(wù)的線程來(lái)直接執(zhí)行任務(wù)等。
什么是HTTP?
HTTP 全稱是超文本傳輸協(xié)議(HyperText Transfer Protocol),是一個(gè)基于請(qǐng)求與響應(yīng)模式的應(yīng)用層協(xié)議,基于 TCP/IP 協(xié)議傳輸數(shù)據(jù)。
HTTP 遵循標(biāo)準(zhǔn)的客戶端-服務(wù)器模型,客戶端打開連接以發(fā)出請(qǐng)求,然后等待它收到服務(wù)器端響應(yīng)。
-
在瀏覽器輸入 URL 后,瀏覽器首先會(huì)通過(guò) DNS 解析獲取到服務(wù)器的 IP 地址,然后與服務(wù)器建立 TCP 連接。 -
TCP 連接建立后,瀏覽器會(huì)向服務(wù)器發(fā)送 HTTP 請(qǐng)求。 -
服務(wù)器收到請(qǐng)求后,會(huì)根據(jù)請(qǐng)求的信息處理請(qǐng)求。 -
處理完請(qǐng)求后,服務(wù)器會(huì)返回一個(gè) HTTP 響應(yīng)給瀏覽器。 -
瀏覽器收到響應(yīng)后,會(huì)根據(jù)響應(yīng)的信息渲染頁(yè)面。然后,瀏覽器和服務(wù)器斷開 TCP 連接。
客戶端發(fā)送一個(gè)請(qǐng)求到服務(wù)器,服務(wù)器處理請(qǐng)求并返回一個(gè)響應(yīng)。這個(gè)過(guò)程是同步的,也就是說(shuō),客戶端在發(fā)送請(qǐng)求后必須等待服務(wù)器的響應(yīng)。在等待響應(yīng)的過(guò)程中,客戶端不會(huì)發(fā)送其他請(qǐng)求。
說(shuō)一說(shuō)OSI七層參考模型
計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)通過(guò)將復(fù)雜的網(wǎng)絡(luò)通信分解成不同的層次,來(lái)標(biāo)準(zhǔn)化交互的過(guò)程。常見的模型包括 OSI 七層模型、TCP/IP 四層模型和五層體系結(jié)構(gòu)。
OSI 是理論上的網(wǎng)絡(luò)通信模型,TCP/IP 是實(shí)際應(yīng)用層面上的網(wǎng)絡(luò)通信模型,五層結(jié)構(gòu)是為了方便理解和記憶。
說(shuō)說(shuō) OSI 七層模型?
OSI(Open System Interconnection)七層參考模型是一個(gè)網(wǎng)絡(luò)架構(gòu)模型,由國(guó)際標(biāo)準(zhǔn)化組織(ISO)提出,用于描述和標(biāo)準(zhǔn)化各種計(jì)算機(jī)網(wǎng)絡(luò)的功能和過(guò)程。這七層從低到高分別是:
-
應(yīng)用層:最靠近用戶的層,負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。這一層提供了網(wǎng)絡(luò)服務(wù)與用戶應(yīng)用軟件之間的接口。例如,Web 瀏覽器、FTP 客戶端和服務(wù)器、電子郵件客戶端等。 -
表示層:確保從一個(gè)系統(tǒng)發(fā)送的信息可以被另一個(gè)系統(tǒng)的應(yīng)用層讀取。它負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)換、壓縮和加密。例如,確保數(shù)據(jù)從一種編碼格式轉(zhuǎn)換為另一種,如 ASCII 到 EBCDIC。 -
會(huì)話層:管理用戶的會(huì)話,控制網(wǎng)絡(luò)上兩節(jié)點(diǎn)間的對(duì)話和數(shù)據(jù)交換的管理。它負(fù)責(zé)建立、維護(hù)和終止會(huì)話。例如,建立一個(gè)會(huì)話令牌,以便在網(wǎng)絡(luò)上的兩個(gè)節(jié)點(diǎn)之間傳遞。 -
傳輸層:提供端到端的通信服務(wù),保證數(shù)據(jù)的完整性和正確順序。這一層包括 TCP 和 UDP 等。 -
網(wǎng)絡(luò)層:負(fù)責(zé)在多個(gè)網(wǎng)絡(luò)之間進(jìn)行數(shù)據(jù)傳輸,確保數(shù)據(jù)能夠在復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)中找到從源到目的地的最佳路徑。這層使用的是 IP(Internet Protocol)協(xié)議。 -
數(shù)據(jù)鏈路層:在物理連接中提供可靠的傳輸,負(fù)責(zé)建立和維護(hù)兩個(gè)相鄰節(jié)點(diǎn)間的鏈路。包括幀同步、MAC(媒體訪問(wèn)控制)。 -
物理層:負(fù)責(zé)在物理媒介上實(shí)現(xiàn)原始的數(shù)據(jù)傳輸,比如電纜、光纖和無(wú)線信號(hào)傳輸。涉及的內(nèi)容包括電壓、接口、針腳、電纜的規(guī)格和傳輸速率等。
Redis的了解, 部署方案?
Redis 是 Remote Dictionary Service 三個(gè)單詞中加粗字母的組合,是一種基于鍵值對(duì)(key-value)的 NoSQL 數(shù)據(jù)庫(kù)。
但比一般的鍵值對(duì),比如 HashMap 強(qiáng)大的多,Redis 中的 value 支持 string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合)、Bitmaps(位圖)、 HyperLogLog(基數(shù)估算)、GEO(地理信息定位)等多種數(shù)據(jù)結(jié)構(gòu)。
而且因?yàn)?Redis 的所有數(shù)據(jù)都存放在內(nèi)存當(dāng)中,所以它的讀寫性能非常出色。
不僅如此,Redis 還可以將內(nèi)存數(shù)據(jù)持久化到硬盤上,這樣在發(fā)生類似斷電或者機(jī)器故障的時(shí)候,內(nèi)存中的數(shù)據(jù)并不會(huì)“丟失”。
除此之外,Redis 還提供了鍵過(guò)期、發(fā)布訂閱、事務(wù)、流水線、Lua 腳本等附加功能,是互聯(lián)網(wǎng)技術(shù)領(lǐng)域中使用最廣泛的緩存中間件。
Redis 除了單機(jī)部署外,還可以通過(guò)主從復(fù)制、哨兵模式和集群模式來(lái)實(shí)現(xiàn)高可用。
主從復(fù)制(Master-Slave Replication):允許一個(gè) Redis 服務(wù)器(主節(jié)點(diǎn))將數(shù)據(jù)復(fù)制到一個(gè)或多個(gè) Redis 服務(wù)器(從節(jié)點(diǎn))。這種方式可以實(shí)現(xiàn)讀寫分離,適合讀多寫少的場(chǎng)景。
哨兵模式(Sentinel):用于監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)的狀態(tài),實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移和系統(tǒng)消息通知。如果主節(jié)點(diǎn)發(fā)生故障,哨兵可以自動(dòng)將一個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn),保證系統(tǒng)的可用性。
集群模式(Cluster):Redis 集群通過(guò)分片的方式存儲(chǔ)數(shù)據(jù),每個(gè)節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)的一部分,用戶請(qǐng)求可以并行處理。集群模式支持自動(dòng)分區(qū)、故障轉(zhuǎn)移,并且可以在不停機(jī)的情況下進(jìn)行節(jié)點(diǎn)增加或刪除。
你了解的設(shè)計(jì)模式
單例模式,在需要控制資源訪問(wèn),如配置管理、連接池管理時(shí)經(jīng)常使用單例模式。它確保了全局只有一個(gè)實(shí)例,并提供了一個(gè)全局訪問(wèn)點(diǎn)。
在有多種算法或策略可以切換使用的情況下,我會(huì)使用策略模式。像技術(shù)派實(shí)戰(zhàn)項(xiàng)目中,我就使用策略模式對(duì)接了訊飛星火、OpenAI 等多家 API 服務(wù),實(shí)現(xiàn)了一個(gè)可以自由切換 AI 服務(wù)的對(duì)話聊天服務(wù)。
這樣就不用在代碼中寫 if/else 判斷,而是將不同的 AI 服務(wù)封裝成不同的策略類,通過(guò)工廠模式創(chuàng)建不同的 AI 服務(wù)實(shí)例,從而實(shí)現(xiàn) AI 服務(wù)的動(dòng)態(tài)切換。
后面想添加新的 AI 服務(wù),只需要增加一個(gè)新的策略類,不需要修改原有代碼,這樣就提高了代碼的可擴(kuò)展性。
隊(duì)列和棧的區(qū)別了解嗎?
隊(duì)列是一種先進(jìn)先出(FIFO, First-In-First-Out)的數(shù)據(jù)結(jié)構(gòu)。在隊(duì)列中,第一個(gè)加入隊(duì)列的元素會(huì)是第一個(gè)被移除的。隊(duì)列常用于處理按順序來(lái)的任務(wù)。
棧是一種后進(jìn)先出(LIFO, Last-In-First-Out)的數(shù)據(jù)結(jié)構(gòu)。在這種結(jié)構(gòu)中,最后一個(gè)加入棧的元素會(huì)是第一個(gè)被移除的。這種特性使得棧非常適合于那些需要訪問(wèn)最新添加的數(shù)據(jù)元素的場(chǎng)合。
引用類型的變量有什么特點(diǎn)
引用類型的變量存儲(chǔ)的是對(duì)象的地址,而不是對(duì)象本身。因此,引用類型的變量在傳遞時(shí),傳遞的是對(duì)象的地址,也就是說(shuō),傳遞的是引用的值。
參考鏈接
-
三分惡的面渣逆襲:https://javabetter.cn/sidebar/sanfene/nixi.html -
二哥的 Java 進(jìn)階之路:https://javabetter.cn
ending
一個(gè)人可以走得很快,但一群人才能走得更遠(yuǎn)。二哥的編程星球已經(jīng)有 5000 多名球友加入了,如果你也需要一個(gè)良好的學(xué)習(xí)環(huán)境,戳鏈接 ?? 加入我們吧。這是一個(gè)編程學(xué)習(xí)指南 + Java 項(xiàng)目實(shí)戰(zhàn) + LeetCode 刷題的私密圈子,你可以閱讀星球?qū)?、向二哥提?wèn)、幫你制定學(xué)習(xí)計(jì)劃、和球友一起打卡成長(zhǎng)。
兩個(gè)置頂帖「球友必看」和「知識(shí)圖譜」里已經(jīng)沉淀了非常多優(yōu)質(zhì)的學(xué)習(xí)資源,相信能幫助你走的更快、更穩(wěn)、更遠(yuǎn)。
歡迎點(diǎn)擊左下角閱讀原文了解二哥的編程星球,這可能是你學(xué)習(xí)求職路上最有含金量的一次點(diǎn)擊。
最后,把二哥的座右銘送給大家:沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧?kù)o的港灣,我是不系之舟。共勉 ??。
