2025/3/28第一面 杭州實在智能 見習python開發工程師
1、Python方法中參數默認值可以是列表或者字典嗎?
在Python中,函數參數的默認值可以是列表或字典,列表或者字典在初始化應在函數體內,如果不正確處理,可能會導致所有調用都共享同一個列表。
2、協程、線性和進程
進程是系統資源分配的最小單位,線程是 CPU 調度的最小單位。
協程是屬于線程的。協程程序是在線程里面跑的,因此協程又稱微線程和纖程等。協程的調度切換是用戶(程序員)手動切換的,因此更加靈活,因此又叫用戶空間線程。協程原子操作性。由于協程是用戶調度的,所以不會出現執行一半的代碼片段被強制中斷了,因此無需原子操作鎖。
3、說說你對redis的了解
4、Python中如何處理并發
1.多線程(Threading)2. 多進程(Multiprocessing)3. 異步編程(Asyncio)4. 使用并發隊列(Concurrency with Queues)
5、有沒有了解過flask框架
6、jwt每個部分是干什么的,jwt與普通token的區別
一個JWT是由三個部分來組成的,頭部(header),載荷(payload),簽名(signature)
頭部數據包含加密類型,使用的加密算法。
載荷是 JSON Web Token 的主體內容部分,包含jwt過期時間、jwt的簽發者,接收jwt的一方。
簽名需要使用編碼后的 header 和 payload 以及我們提供的一個密鑰
區別:Token需要在服務器端查詢數據庫。服務器會對比存儲在數據庫中的Token信息,如果匹配成功,則驗證通過。
JWT不需要查詢數據庫,直接在服務端進行校驗。JWT包含了用戶信息和簽名,服務器只需使用保存的密鑰驗證JWT的正確性即可??。
2025/3/28第二面 深圳智譜華章 大模型研發
1、存123,元組、字典、哈希、列表哪個占用內存少,原理是什么,集合為什么比列表大
元組不可變,創建時分配固定內存,無需預留空間,列表可變,支持動態擴容,通常會預分配額外空間(即使元素數量固定),集合基于哈希表實現,需維護空槽位以減少哈希沖突。字典同樣基于哈希表,但每個條目需存儲鍵、值和哈希,結構更復雜。從小到大依次為:元組 < 列表 < 集合 < 字典。
2、裝飾器原理
3、元組可不可以改變。不可變
4、大模型的關鍵詞
2025/4/1 第三面 上海巖山科技,python開發
1、為什么用Withopen()
?使用with open()打開文件的主要原因包括自動關閉文件、簡潔的代碼和異常安全?。
?自動關閉文件?:使用with open()時,文件在退出with語句塊時自動關閉,避免了因忘記調用file.close()而造成的文件句柄泄漏問題。
?簡潔的代碼?:with open()語法比傳統的open()和close()更簡潔,減少了代碼量,且更易于維護?
?異常安全?:如果在文件操作過程中發生異常,with open()語句會確保文件在異常拋出后依然被正確關閉?
with open(‘example.txt’, ‘r’) as file:
content = file.read()
print(content)
這里,'r’表示以只讀模式打開文件。
with open(‘example.txt’, ‘w’) as file:
file.write(‘Hello, world!’)
2、Redis為什么性能好
(1)、Redis 的高性能首先得益于其基于內存的存儲設計。傳統的數據庫通常將數據存儲在硬盤中,這會帶來大量的磁盤 I/O 操作,而硬盤訪問速度遠遠低于內存訪問速度。Redis 通過將數據存儲在 RAM(內存) 中,避免了磁盤 I/O,從而大大提高了訪問速度。
(2)、單線程處理:Redis 的所有操作在單線程中完成,避免了多線程的鎖機制問題,降低了上下文切換的開銷。多線程編程常常需要引入鎖機制來防止數據競爭,而 Redis 通過單線程架構消除了這一復雜性,減少了系統的負擔。
(3)、高效的數據結構設計
Redis 的數據結構設計是高度優化的,這也是其性能提升的核心之一。Redis 支持多種高效的數據結構,包括字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)、哈希(Hash)等。
(4)、數據淘汰策略
LRU(Least Recently Used,最近最少使用)
LFU(Least Frequently Used,最少頻繁使用)
隨機淘汰
3、Python的性能為什么比java慢
1、Python是一種解釋性語言,代碼在執行時會逐行解釋并執行,這種動態類型和解釋執行的特性導致其運行速度比靜態編譯的語言如Java慢
2、Python的內存管理是基于引用計數的,這種機制在處理大量數據時可能會導致內存碎片化,從而影響性能
3、Java在處理并發操作時通常比Python更有效率。Java的JVM(Java虛擬機)提供了高效的線程管理和同步機制,而Python的GIL(全局解釋器鎖)限制了多線程的并行執行,影響了多線程性能???
4、Mysql的四個特性
原子性,一致性,持久性,隔離性
事務的隔離等級:讀未提交,讀已提交,可重復度,串行化
數據庫并發下事務的三種現象:臟讀(讀取了未提交事務的數據),不可重復讀(不可重復讀指的是在事務A中先后多次讀取同一個數據,讀取的結果不一樣,因為另外一個事務也訪問該同一數據,并且可能修改這個數據,這種現象稱為不可重復讀。),幻讀(在事務A中按照某個條件先后兩次查詢數據庫,兩次查詢結果的條數不同,這種現象稱為幻讀。不可重復讀與幻讀的區別可以通俗的理解為:前者是數據變了,后者是數據的行數變了。)
5、Transformer中FFN的作用
?Transforme