1.技術面試題
(1)TCP與UDP的區別是什么?
答: TCP建立通信前有三次握手,結束通信后有四次揮手,數據傳輸的可靠性高但效率較低;UDP不需要三次握手就可傳輸數據,數據傳輸完成后也不需要四次揮手,數據傳輸的可靠性低但效率高
(2)DHCP和DNS的作用是什么?
答: DHCP的作用是自動為處于網絡中的設備自動分配ip地址,避免手動分配所出現的問題;DNS的作用是將利于人類記憶的網站域名轉換為計算機可識別的IP地址
(3)簡述 Linux 文件系統的目錄結構,其中/boot、/var、/usr目錄的作用分別是什么?
答: linux采用的是層級式目錄結構,所有的文件和目錄都掛在根目錄/下,各個目錄有各不相同的功能
/boot目錄的作用是啟動相關文件(內核,引導加載程序)
/var的作用是管理可變數據(日志、緩存、郵件隊列)
/usr的作用是管理用戶程序和文件(只讀或很少修改)
(4)Linux系統突然無法訪問外網,但內網通信正常。請列出至少 5 個可能的故障點及排查步驟。
**答:**1.網關配置錯誤:默認網關設置錯誤、網關設備故障或網關不可達
排查方法: 1.檢查默認網關配置 ip route show
2.ping 網關測試連通性 ping -c 網關
若ping不通,檢查網關設備接口是否正常工作(比如說路由器接口有沒有松動,設備是否斷電)
2.DNS 解析故障:DNS 服務器配置錯誤、DNS 服務器不可用或域名被污染。
排查方法:
1.檢查 DNS 配置文件: cat /etc/resolv.conf
2.測試 DNS 服務器連通性:ping -c DNS服務器IP
3.用ip訪問外網:ping -c 8.8.8.8
若ip能訪問,說明不是DNS的問題
3.網絡接口或驅動問題:網卡物理連接松動、驅動損壞或網卡硬件故障。
排查方法:
1.檢查網卡狀態:ip link show
2.確認物理接口是否接入狀態良好(有沒有松動等問題),網卡指示燈是否閃爍
3.重啟網絡服務或網卡:
sudo systemctl restart network-manager(重啟網絡服務)
sudo systemctl restart network(重啟網卡)
4.更新網卡驅動:sudo apt update && sudo apt upgrade
4.IP 地址沖突或 DHCP 問題:IP 地址與內網其他設備沖突、DHCP 租約過期或分配失敗
檢查方法:
1.檢查 IP 地址和 MAC 地址:ip addr show
2.釋放并重新獲取 IP(DHCP 場景):
sudo dhclient -r(釋放當前ip)
sudo dhclient(重新獲取ip)
5.手動配置 IP 測試
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
5.防火墻或安全組限制:系統防火墻(如 iptables、firewalld)或外部安全組阻止外網訪問
檢查方法:
1.檢查系統防火墻狀態:sudo ufw status
2.臨時關閉防火墻測試:sudo ufw disabl
若關閉后能訪問外網,說明防火墻規則有誤,需放行相關端口(如 TCP/UDP 53 用于 DNS)
3.檢查云服務器安全組規則:若在云環境中,登錄控制臺檢查安全組是否允許出站流量
2.HR面試題
(1)假如你成功入職,卻發現直屬領導能力遠不如你,你會如何與他共事?
答: 我認為盡管在工作能力上領導不如我,領導依然有他的過人之處.在工作中,我會積極與領導溝通,服從領導的指示,將工作和團隊放在首位,為公司盡上自己的力量
(2)你簡歷上的經歷并不突出,我們為什么要選你?
**答:**雖然我的經歷并沒有那么出彩,但是我對于貴公司的這份職業有著很高的期冀與熱情.假若我能拿到貴公司的offer,我會在工作的過程中虛心向同事學習, 服從上級領導的安排,努力成為對團隊,對公司有貢獻的員工
(3)你還面試了哪些公司?
答: 在面試貴公司之前,我還面試了xx公司和xx公司等,但上述公司的薪資待遇等不是讓我很滿意,而此次貴公司的面試使我得到了一個滿意的答案
(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
答: b
(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. 運行時錯誤
答: a
4.問答題
(1)什么是 Python 的動態類型特性?舉例說明。
答:
python的動態類型特性指的是變量類型在運行時自動確定,無需提前聲明,且同一變量可以在不同時刻指向不同類型的對象。
舉例:
x=10086 (此時的x是整數)
x=“hello” (此時的x是字符串)
x=[1,3,5,7,9] (此時的x是列表)
(2)如何將字符串 “123” 轉換為整數?如果字符串為 “12a3” 會發生什么?
答: 可以使用int這個函數將字符串轉化為整數,如果字符串了多了一個a,那會轉換失敗
(3)比較 Python 中的動態類型與靜態類型語言(如 Java)的優缺點。
答:
動態類型語言:
優點:開發效率高,靈活性強,代碼簡潔
缺點:代碼可維護性低,容錯率低,發現問題難以解決
靜態類型語言:
優點:可提前發現錯誤,代碼可維護性高,性能更高
缺點:開發效率低,靈活性差,學習過程難
(4)簡述 input() 函數和 eval() 函數的區別,并舉例說明它們的應用場景。
答:
兩個函數的區別在于input函數只負責接收輸入內容,不負責解析輸入的python語法,eval函數會解析并執行輸入的python的語法函數
舉例:
input(“1+2+3”) 輸出結果為1+2+3
eval(“1+2+3”) 輸出結果為6
(5)比較 == 運算符和 is 運算符的區別,并舉例說明在什么情況下結果會不同。
答:
兩個運算符的區別在于比較對象的不同,==運算符比的是值是否相等,is運算符比的是是否為同一對象
舉例:
a=[1,2,3]
b=[1,2,3]
print(a==b) 結果為true print(a is b) 結果為false
a=[1,2,3]
b=a
print(a==b) 結果為false print(a is b) 結果為true
(6)邏輯運算符 and、or、not 的運算規則是什么?請分別舉例說明。
答: and的運算規則
1.當所有操作數的 “真值” 均為 True 時,返回最后一個操作數的真值;
2.只要有一個操作數的 “真值” 為 False,返回第一個為 False 的操作數的真值;
print(5 and 10) # 10(5和10均為真,返回最后一個值)
print(0 and 10) # 0(0為假,返回第一個假值)
print(“hello” and “”) # “”(""為假,返回第一個假值)
or的運算規則:
只要有一個操作數的 “真值” 為 True,返回第一個為 True 的操作數的真值;
所有操作數的 “真值” 均為 False 時,返回最后一個操作數的真值;
print(0 or 10) # 10(0為假,10為真,返回第一個真值)
print(“hello” or 10) # “hello”(第一個為真,直接返回,不計算第二個)
print(“” or []) # [](全假,返回最后一個假值)
not的運算規則:
對單個操作數的 “真值” 取反,返回 True 或 False;
若操作數為 “真”(非零、非空等),返回 False;若為 “假”(0、空、None 等),返回 True。
print(not 0) # True(0為假,取反為真)
print(not 5) # False(5為真,取反為假)
print(not “”) # True(空字符串為假,取反為真)
print(not [1, 2]) # False(非空列表為真,取反為假)
print(not None) # True(None為假,取反為真)
(7)當使用 input() 函數獲取用戶輸入的數字時,如何將其轉換為整數類型?如果用戶輸入的不是數字,會發生什么?
答: input函數將用戶輸入的數字(字符串)轉換為整數的方法:
user_input = input(“數字”)
num = int(user_input)
print(f"輸入的數字是:{num},類型為:{type(num)}")
如果用戶輸入的不是數字,會發生報錯
(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,符合第一個條件 x>3,執行并進入下一個條件
第二個條件為x>4,符合,執行并進入下一個條件
第三個條件為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=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=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 math# 輸入坐標:1 2 3 3 2 1
x1, y1, x2, y2, x3, y3 = map(float, input().split())# 計算三條邊的長度
a = math.hypot(x2 - x3, y2 - y3) # 邊 a 對應頂點 (1, 2) 的對邊
b = math.hypot(x1 - x3, y1 - y3) # 邊 b 對應頂點 (3, 3) 的對邊
c = math.hypot(x1 - x2, y1 - y2) # 邊 c 對應頂點 (2, 1) 的對邊# 計算三個角的弧度值
A_rad = math.acos((a*a - b*b - c*c) / (-2 * b * c))
B_rad = math.acos((b*b - a*a - c*c) / (-2 * a * c))
C_rad = math.acos((c*c - b*b - a*a) / (-2 * a * b))# 將弧度轉換為角度
A_deg = math.degrees(A_rad)
B_deg = math.degrees(B_rad)
C_deg = math.degrees(C_rad)# 輸出結果,保留兩位小數
print("{0:.2f}".format(A_deg))
print("{0:.2f}".format(B_deg))
print("{0:.2f}".format(C_deg))**(10)編寫代碼,解2×2線程方程****題目描述**如有一個2×2的線程方程組:
$$
ax+by=e \\
cx+dy=f
$$
你可以使用克萊姆法則解該線性方程:
$$
x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-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
>
> 輸出:
>
> 無解**答:**```python
#在此寫入你的代碼
# 讀取輸入的六個數據
a, b, c, d, e, f = map(float, input().split())# 計算判別式
discriminant = a * d - b * cif discriminant == 0:print("無解")
else:# 計算x和y的值x = (e * d - b * f) / discriminanty = (a * f - e * c) / discriminant# 保留一位小數輸出print("{0:.1f}".format(x))print("{0:.1f}".format(y))