1.技術面試題
(1)TCP與UDP的區別是什么?
答:
①連接性:TCP 面向連接,3次握手及4次揮手,建立端到端的虛鏈路像;UDP 無連接,直接發送,無需預先建立連接 。
②傳輸速度:TCP 因要保障可靠等,流程多,速度慢;UDP 簡單直接,速度快 。
③傳輸可靠性:TCP 有確認 排序 重傳 流控(窗口滑動機制),可靠傳輸;UDP 不管數據是否到達、有無差錯,可靠性低 。
④首部開銷:TCP 首部 20 字節(還有可選部分,通常 20 );UDP 首部 8 字節,TCP 開銷更大 。
(2)DHCP和DNS的作用是什么?
答:
①**DHCP的作用:**DHCP 主要負責為網絡中的設備自動分配網絡配置參數。在一個局域網內,當新設備,接入網絡時,無需手動去設置復雜的 IP 地址、子網掩碼、默認網關以及 DNS 服務器地址等信息,DHCP 服務器會自動為其分配。還能讓設備能快速、便捷地獲取到可用的網絡參數,正常接入網絡,同時還通過租約機制對 IP 地址進行動態管理,提升 IP 地址的利用率。
②**DNS的作用:**DNS 主要功能是進行域名解析 將人們易于記憶的域名轉換為計算機可識別和處理的 IP 地址; 還能實現負載均衡,將用戶對網站的訪問請求合理分配到不同的服務器上,避免單個服務器負載過重,保障網站的正常訪問和服務質量。
(3)簡述 Linux 文件系統的目錄結構,其中/boot、/var、/usr目錄的作用分別是什么?
答:
①**/boot
**:存放系統啟動必需的核心文件,包括 Linux 內核、初始化內存盤、啟動引導程序(如 GRUB)的配置文件等,是系統正常啟動的基礎。
②**/var
**:用于存儲動態變化的文件,內容會隨系統運行不斷更新,比如日志文件(/var/log
)、郵件數據、緩存文件以及服務運行時產生的臨時數據等。
③**/usr
**:存放系統級的應用程序、庫文件、文檔等,包含非啟動必需的用戶命令、系統管理命令、應用依賴的庫文件以及共享數據(如手冊頁)等,是系統中較龐大的目錄之一。
(4)Linux系統突然無法訪問外網,但內網通信正常。請列出至少 5 個可能的故障點及排查步驟。
答:
①默認網關配置錯誤
- 排查:通過
route -n
或ip route
查看路由表,確認是否存在正確的默認網關(指向外網出口的網關地址)。 - 解決:若網關缺失或錯誤,用
route add default gw <正確網關IP>
臨時添加。
②DNS 服務器配置異常
- 排查:查看
/etc/resolv.conf
中是否配置了有效的 DNS 服務器(如運營商或公共 DNS),若為空或錯誤則無法解析域名。 - 解決:臨時添加
nameserver 8.8.8.8
(公共 DNS)到該文件測試。
③防火墻規則阻止外網訪問
- 排查:通過
iptables -L
或firewalld-cmd --list-all
檢查是否有規則禁止出站連接(如拒絕訪問外網端口或 IP 段)。 - 解決:臨時關閉防火墻(
systemctl stop firewalld
或iptables -F
)驗證是否為規則問題。
④外網線路或上游設備故障
- 排查:嘗試
ping <網關IP>
確認與網關連通性,若不通可能是線路或網關設備(如路由器)故障。 - 解決:檢查網線連接、重啟上游路由器,或聯系網絡管理員確認外網鏈路狀態。
⑤IP 地址或子網掩碼配置錯誤
- 排查:通過
ip addr
查看本機 IP 是否在正確網段(與網關同網段),子網掩碼是否匹配(如常見的 255.255.255.0)。 - 解決:若手動配置錯誤,重新設置正確的 IP 和子網掩碼;若為 DHCP 分配,用
dhclient -r && dhclient
重新獲取。
2.HR面試題
(1)假如你成功入職,卻發現直屬領導能力遠不如你,你會如何與他共事?
答: 尊重領導,把重點放在我手頭上的活,如果發現領導在某一方面不太行的時候,我能夠幫忙就幫忙,但不搶風頭。有想法可以私下說,領導如果認為不妥當,那么就按照領導的來。不糾結誰的能力強,誰的能力弱,而是共同把工作做好,提升自己。
(2)你簡歷上的經歷并不突出,我們為什么要選你?
答:我明白,我的簡歷里亮點不夠突出,但是我一直覺得比起過去的經歷,能不能把眼前的工作干到位,能不能快速跟上團隊的節奏更重要。這個崗位需要的能力,我雖然沒有在大項目里面練過,但平時自己做事時會一直積攢經驗,而且我對這塊工作很上心,學東西很快,不怕,從小事做起。如果你給我機會,我肯定會把每件膠帶的是做扎實,哪怕一開始沒有那么出彩,也會慢慢的跟上節奏。不給團隊拖后腿,我覺得愿意踏實干,能跟著團隊一起成長也是一種價值。
(3)你還面試了哪些公司?
答:目前確實接觸了幾家同行業的公司,想要更全面的了解這個領域的發展趨勢和不同企業模式下的文化,畢竟只有多看看才能清楚自己真正適合什么。但是對比下來,咱們公司的優勢特別吸引我,所以目前經歷主要還是放在咱們這邊的溝通上,也真心希望能夠加入團隊,跟著大家一起進步、做事。
(4)如果你發現公司某項業務存在合規風險,但領導暗示‘別多管閑事’,你會怎么做?
答:我會先確定風險的準確性,然后私下找領導用具體依據說明可能的問題和影響,再提句“您經驗豐富,或許有更好的處理方式,我就是覺得該讓您知道這些情況"。最后聽領導安排,進到責任,尊重他的判斷。
3.選擇題
(1)以下哪個是合法的 Python 變量名?
A. 2var
B. _var
C. var@1
D. var-1
答: B
(2)表達式 True + 2 的結果是? A.True
B. 3
C. 2
D. TypeError
答: D
(3)以下哪個表達式會引發錯誤?
A.“1” + “2”
B. [1, 2] + [3, 4]
C. (1, 2) + (3, 4)
D. {1, 2} + {3, 4}
答: D
(4)以下哪個是將字符串轉換為整數的正確方法?
A. str(5)
B. int(“5”)
C. float(“5”)
D. bool(“5”)
答: B
(5)執行 print(“Hello”, “World”, sep=‘-’, end=‘!’) 后,輸出結果是?
A .Hello World
B. Hello-World
C. Hello-World!
D. Hello World!
答:C
(6)以下哪個運算符用于判斷兩個對象是否是同一個對象(內存地址相同)?
A. ==
B. !=
C. is
D. in
答:C
(7)執行 print(f"The result is {2 + 3}") ,輸出結果是?
A. The result is {2 + 3}
B. The result is 5
C. The result is 2 + 3
D. 語法錯誤
答: B
(8)以下代碼的輸出結果是?
x = 5
if x > 3:
print(“A”)
elif x > 4:
print(“B”)
else:
print(“C”)
A. A
B. B
C. C
D. 無輸出
答:A
(9)以下代碼是否存在錯誤?
A = 10
if A > 5:
print(“Big”)
elif A < 5:
print(“Small”)
else
print(“Medium”)
A. 無錯誤
B. 縮進錯誤
C. else 后缺少冒號
D. elif 條件錯誤
答: C
(10)以下代碼的輸出結果是?
x = 0
if x:
print(“True”)
else:
print(“False”)
A. True
B. False
C. 語法錯誤
D. 無輸出
答:B
(11)以下代碼的輸出結果是?
A = 10
B = 20
if A > 5 and B < 15:
print(“條件1”)
elif A > 8 or B > 18:
print(“條件2”)
else:
print(“條件3”)
A. 條件 1
B. 條件 2
C. 條件 3
D. 無輸出
答: B
(12)以下代碼的輸出結果是?
A = 5
B = 10
if A > 3 or B / 0 > 0:
print(“A”)
else:
print(“B”)
A. A
B. B
C. 語法錯誤
D. 運行時錯誤
答:D
4.問答題
(1)什么是 Python 的動態類型特性?舉例說明。
答: 不用提前規定變量是啥類型,賦值成啥它就是啥類型,而且還能隨時變。
eg:
a=5#整數
a="你好"#字符串
(2)如何將字符串 “123” 轉換為整數?如果字符串為 “12a3” 會發生什么?
答:
int("123")
若用int("12a3")
會出現報錯,報錯的內容為ValueError: invalid literal for int() with base 10: ‘12a3’
(3)比較 Python 中的動態類型與靜態類型語言(如 Java)的優缺點。
答:
Python:編碼靈活,開發快;隱患多,問題在運行時才暴露,容易翻車
Java:代碼的結構清晰,類型明確;代碼麻煩,迭代慢,開發速度慢
(4)簡述 input() 函數和 eval() 函數的區別,并舉例說明它們的應用場景。
答:區別:
input():獲取用戶輸入的原始字符串,不管內容。直接存為字符串類型。
eval():把傳入的字符串當作 Python 代碼執行,可計算表達式、還原數據結構(如列表、字典等 )。
應用場景:
input( ):做一個簡單的自我介紹程序,讓用戶輸入自己的年齡數值,age_str=input("請輸入你的年齡:")
,運行以后用戶輸入18,那么age_str存的就是18
eval( ):想讓用戶輸入年齡子字符串直接參與數學計算,eval(input("請輸入你的年齡:") )
,用戶輸入18,age就變成整數18.
(5)比較 == 運算符和 is 運算符的區別,并舉例說明在什么情況下結果會不同。
答:
區別:==運算符是檢查兩者的值是否相等,is運算符是檢查兩者引用的是否為同一對象,而非值相同。
eg:
a=200
b=200
print(a==b)#True
a=200
b=200
print(a is b)#False
(6)邏輯運算符 and、or、not 的運算規則是什么?請分別舉例說明。
答:
運算規則
and:有假則假 print(5>3 and 4>5)#Flase
or:有真則真 print(5>3 or 4>5)#True
not:真假相反 print(not 3 > 2)#Flase
(7)當使用 input() 函數獲取用戶輸入的數字時,如何將其轉換為整數類型?如果用戶輸入的不是數字,會發生什么?
答: 用int(input("請輸入數字:"))
,可將數字字符串轉化為整數,若輸入的不是數字則會觸發ValueError報錯
(8)閱讀以下代碼,解釋輸出結果并說明原因。
x = 5
if x > 3:
print(“X 大于3”)
if x > 4:
print(“X 大于4”)
if x > 5:
print(“X 大于5”)
答:
輸出結果
x大于3
x大于4
原因
x = 5
,第一個if x > 3
,5 大于 3,條件成立,執行print("X大于3")
。
第二個if x > 4
,5 大于 4,條件成立,執行print("X大于4")
。
第三個if x > 5
,5 不大于 5,條件不成立,不執行print("X大于5")
。
(9)編寫代碼,計算三角形的三個角
題目描述
輸入三角形的三個頂點坐標,并計算該三角形的三個角分別是多少(角度制)
A=acos((a?a?b?b?c?c)/(?2?b?c))B=acos((b?b?a?a?c?c)/(?2?a?c))C=acos((c?c?b?b?a?a)/(?2?a?b))
其中a、b、c分別表示三條邊,A、B、C分別表示三邊對應的角
輸入輸出描述
輸入六個數據,分別表示三角形三個頂點的坐標x1、y1、x2、y2、x3和y3,數據之間用空格分隔
輸出三行,分別為A、B、C三個角的度數,結果保留兩位小數
示例
輸入:
1 1 6.5 1 6.5 2.5
輸出:
15.26
90.00
74.74
答:
import mathx1,y1,x2,y2,x3,y3=map(float,input().split(" "))
a=((x1-x2)**2+(y1-y2)**2)**0.5
b=((x1-x3)**2+(y1-y3)**2)**0.5
c=((x2-x3)**2+(y2-y3)**2)**0.5
A=math.degrees(math.acos((a*a-b*b-c*c)/(-2*b*c)))
B=math.degrees(math.acos((b*b-a*a-c*c)/(-2*a*c)))
C=math.degrees(math.acos((c*c-b*b-a*a)/(-2*a*b)))
print(f"{A:.2f}")
print(f"{B:.2f}")
print(f"{C:.2f}")
(10)編寫代碼,解2×2線程方程
題目描述
如有一個2×2的線程方程組:
ax+by=ecx+dy=f
你可以使用克萊姆法則解該線性方程:
x=ed?bfad?bc,y=af?ecad?bc
其中 ad?bc
為判別式,如果為零則輸出無解
輸入輸出描述
輸入a、b、c、d、e、f六個數據,數據之間用空格分隔
輸出兩行,第一行x的解,第二行y的解,保留一位小數
示例1
輸入:
9.0 4.0 3.0 -5.0 -6.0 -21.0
輸出:
-2.0
3.0
示例2
輸入:
1.0 2.0 2.0 4.0 4.0 5.0
輸出:
無解
a, b, c, d, e, f =map(float,input().split())
i = a*d- b*c
if i==0:print("無解")
else:x = (e * d- b * f) /iy=(a * f - e * c) /ie = a * x + b * yf = c * x + d* yprint (f"{x:.1f}")print (f"{y:.1f}")