基本流程
面試包括一小時筆試,三輪面試官面試,我面的是雲計算相關,對方基本業務是爲內部呼叫中心提供雲服務,說是有上萬個呼叫中心,用嵌入式盒子加顯示器做雲終端,連接到雲上,主要編程語言是python
跟新,現在已經入職,主要是做內部web發佈工具,需要的技術棧包括python,django,數據庫以及web開發常用技術
筆試
筆試包括選擇題,和三道編程題
選擇題
主要是一些數學題和邏輯題,數學底子比較好應該沒問題
三道編程題
數組中是否存在和爲s的兩個數
一個數組,判斷其中有沒有兩個數和爲s
先排序,兩個遊標分別指向首尾,可以先判斷最小的數是否大於s/2,變少判斷,複雜度爲O(n*log(n))
動態規劃 弱項
一個數組保存硬幣面值,求和爲S的最小硬幣數
第k大的數
m個已經排好序的數組,求這m個數組中第k大得數
一輪面試
比較基礎
二輪面試
比較基礎,問了些比較軟的東西,實習經歷相關,實習有什麼收穫之類的
三輪面試
壓力較大,面試官技術很厲害的樣子,問你看過哪些書,然後挑你不知道的問,有點挑刺,壓力面的味道
面試題目蒐集
python裏面元組和dict區別
線程和進程
同一進程的不同線程的異同
不同點:
- 標示符id
- 狀態及狀態轉換,需要提供一些操作
- 上下文環境:程序計數器等寄存器
- 自己的棧和棧指針
相同點:
共享所在進程的地址空間和其他資源
web服務器相關
你對jungle瞭解多少
爲什麼用tornado服務器?
聽同學講的,非阻塞異步io
core dump調試
參考一篇博客文章
core文件
core文件包含程序運行時的內存,寄存器狀態、堆棧指針、內存管理信息還有各種函數調用堆棧信息等,可以理解爲程序工作當前狀態存儲生成的一個文件,通過分析工具分析這個文件,可以定位到程序異常退出的時候對應的堆棧調用的信息
如何判斷一個文件是否爲core文件
readelf -h core
查看type字段
或者:
file core
ulimit設置
ulimit -c [size]
size | 含義 |
---|---|
0 | 不產生core文件 |
n | 產生core文件大小爲n個block,一個block大小爲512bytes |
ulimit | 大小不限 |
還有些路徑設置相關,需要的時候搜一下
core產生的原因
- 內存訪問越界
- 多線程程序使用了線程不安全函數
- 多線程讀寫的數據沒有加鎖保護
- 非法指針
- 指針轉換,字節對齊的問題,比如32位機器int類型數據地址是4字節對齊,一個char類型數據地址1字節對齊即可,如果將一個非4字節對齊的char指針賦給int類型數據指針,會發生什麼呢?
- 堆棧溢出
- 局部定義一個特別大得數組這種,遞歸嵌套也可能爆棧
gdb調試core
gdb executivefile corefile
可以看到一些詳細的錯誤信息
注意一些常見的signal含義:
signal | 含義 |
---|---|
SIGABRT | 調用abort函數時產生此信號。進程異常終止。 |
SIGBUS | 指示一個實現定義的硬件故障。 |
SIGEMT | 指示一個實現定義的硬件故障。EMT這一名字來自PDP-11的emulator trap 指令。 |
SIGFPE | 此信號表示一個算術運算異常,例如除以0,浮點溢出等。 |
SIGILL | 此信號指示進程已執行一條非法硬件指令。4.3BSD由abort函數產生此信號。SIGABRT現在被用於此。 |
SIGIOT | 這指示一個實現定義的硬件故障。IOT這個名字來自於PDP-11對於輸入/輸出TRAP(input/outputTRAP)指令的縮寫。系統V的早期版本,由abort函數產生此信號。SIGABRT現在被用於此。 |
SIGQUIT | 當用戶在終端上按退出鍵(一般採用Ctrl-/)時,產生此信號,並送至前臺進程組中的所有進程。此信號不僅終止前臺進程組(如SIGINT所做的那樣),同時產生一個core文件。 |
SIGSEGV | 指示進程進行了一次無效的存儲訪問。名字SEGV表示“段違例(segmentationviolation)”。 |
SIGSYS | 指示一個無效的系統調用。由於某種未知原因,進程執行了一條系統調用指令,但其指示系統調用類型的參數卻是無效的。 |
SIGTRAP | 指示一個實現定義的硬件故障。此信號名來自於PDP-11的TRAP指令。SIGXCPUSVR4和4.3+BSD支持資源限制的概念。如果進程超過了其軟C P U時間限制,則產生此信號。 |
SIGXFSZ | 如果進程超過了其軟文件長度限制,則SVR4和4.3+BSD產生此信號。 |
數據庫
事務,database transaction:單個邏輯工作單元執行的一系列操作,要麼完全執行,要麼完全不執行
事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合爲一個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程序更加可靠。
ACID屬性:
- atomic原子性:事務必須是原子工作單元,對於數據修改,要麼全部執行,要麼不執行
- consistent一致性:事務完成時,必須使所有的數據保持一致狀態,
- insulation隔離性:併發事務所作的修改必須與任何其它併發事務所作的修改隔離,事務查看數據時數據所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看中間狀態的數據。
- duration持久性:事務完成之後,它對於系統的影響是永久性的。
linux使用
查看某個運行的進程
參考
- ps -aux | grep program
- top
git使用
版本機常規操作,難一點的是分支的管理
linux命令返回值
多線程多進程相關 弱項
多進程,多線程,單線程服務器的區別和應用場景
線程,進程的區別等
進程之間的任務隊列