個人面經整理深信服測開

Linux指令

  1. Ps命令查找與進程相關的pid號
    Ps a 顯示現在終端機下的所有程序
    Ps -A 顯示所有程序
    Ps e 列出程序時,顯示每個程序所需要的環境變量
    Ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係
    Ps -H 顯示樹狀結構,表示程序間的相互關係
    Ps -N 顯示所有程序,除了ps指令終端機下的程序之外
    Ps s顯示程序信號格式
    Ps u 以用戶爲主的格式來顯示程序狀況
    Ps x 顯示所有程序
    Ps aux,a表示所有關聯到終端的進程,x表示所有進程,u表示列出進程的用戶
    Ps -elf , -e 表示列出所有進程, -l表示長格式, -f 表示完整格式

  2. File 通過探測文件內容判斷文件類型
    File ? 文件名
    -v 標準輸出後顯示版本信息並退出
    -z 探測壓縮過的文件類型
    -l 允許符合連接

  3. mkdir 建立名稱爲dirname的子目錄
    Mkdir ? 目錄名
    -m 設定模式的權限
    -p 需要時創建上層目錄
    -v 每次創建新目錄都顯示信息

  4. grep 指定文件中搜索特定的內容,並將這些內容的行標準輸出。
    Grep ?
    -c 只輸出匹配行的行數
    -I 不區分大小寫
    -h 查詢多文件時不顯示文件名
    -l 查詢多字符時只輸出包含匹配文件的文件名
    -n 顯示匹配行及行號
    -s 不顯示不存在或錯誤的信息
    -v 顯示不包含匹配文本的所有行

  5. find 在目錄中搜索文件
    Find 路徑 ? 描述
    -depth
    -version 打印版本

  6. top 實時顯示進程的動態
    -c顯示完整命令
    -s 積累模式顯示程序信息

  7. df 檢查文件系統磁盤空間佔用情況

  8. du 檢查磁盤空間使用量

  9. fdisk 磁盤分區

Mysql增刪查改

  1. 刪除:
    1drop刪除數據庫和表
    Drop database db
    Drop table tb
    2delete刪除表中的字段
    Delete from tb where id=1
    如果delete語句沒有加where則把表中的所有記錄都刪除
    3truncate刪除表中的所有字段
    Truncate table tb
  2. 查詢
    Select 要查詢的數據類型 from 表名 where 條件
  3. 插入
    Insert into ‘數據庫名’.數據庫表名 set ‘?’=‘?’,‘?’=’?‘’
  4. 修改
    Updata ‘表名’ set ?=?,?=? where id=1

比較兩個網頁的訪問速度
Ping 兩個網站的網址可以得到發送32字節需要的時間,直接比較

測試是做什麼的
測試項目的具體工作:搭建測試環境、編寫和執行測試用例、寫測試計劃和報告、提交bug表單並跟蹤bug修改、編寫腳本執行自動化測試、進行性能測試壓力測試等

Tcp udp區別

  1. Tcp面向連接,udp無連接
  2. Tcp可靠服務,無差錯、不丟失、不重複、按序到達,udp盡最大努力交付
  3. Tcp面向字節流,udp面向報文
  4. Tcp點到點,udp一對一、一對多、多對一、多對多
  5. Tcp首部20字節,udp首部8字節
  6. Tcp全雙工可靠信道,udp不可靠信道
  7. Tcp傳輸效率低,udp傳輸效率高
  8. Tcp有流量控制、擁塞控制,udp無

Vi編輯器的三種模式

  1. 命令模式,vi的入口
    常規編輯操作,定位、翻頁、複製、粘貼、刪除等
  2. 末行模式,vi的出口
    保存、退出等操作
    W,保存
    Q,退出,沒保存不允許退出
    Q!強行退出,不保存退出
    Wq保存並退出
    X保存並退出
  3. 編輯模式
    正常編輯文字

編程題(求三角形面積)
海倫公式:
If(a+b>c&&a+c>b&&b+c>a)
{
S=(a+b+c)/2;
Area=sqrt(s*(s-a)(s-b)(s-c));
}

Dns流程

  1. 檢查瀏覽器緩存
  2. 檢查系統緩存,即hosts文件
  3. 本地域名解析服務器
  4. 本地域名服務器向根域名服務器發起請求
  5. 根域名服務器返回通用頂級域的地址(gTLD)
  6. 本地域名服務器向gTLD發起請求
  7. gTLD服務器返回name server服務器
  8. name server服務器返回ip給本地域名服務器
  9. 本地域名服務器緩存解析結果
  10. 返回解析結果給用戶

Ddos和waf原理
Ddos:分佈式拒絕服務攻擊。通過控制多個肉雞或者服務器組成的殭屍網絡對目標發送大量看似合法的請求,佔用大量的網絡資源,阻止用戶對網絡資源的正常訪問。
Waf:web應用防火牆,能在應用層理解http會話,有效阻止應用層攻擊,同時也具備網絡防火牆功能。
解析http請求-------匹配規則--------防禦動作----------記錄日誌
對請求的內容進行規則匹配、行爲分析識別出惡意行爲,並且執行相關的阻斷、記錄、警告操作。

Linux配置路由器的命令,怎麼查看端口是否被佔用,一個文件中找某個詞的命令,進程,內存,查看路由

  1. 配置路由器 # route [add|delete] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
  2. 查看某個端口是否被佔用 Isof -i : 端口號 或者netstat -anp|grep 端口號
  3. 一個文件中找某個詞 grep
  4. 查看進程Ps
  5. 查看內存 top
  6. 查看路由,顯示當前路由 route

一千萬個域名找一個域名

正則表達式

  1. 正則表達式用單個字符串匹配符合某個句法規則的字符串
  2. 數量限定: +,表示前面字符至少出現一次>=1。 ?,表示前面字符最多出現一次<=1。 *可以出現任意次 n.
  3. ()定義優先度

野指針是什麼,如何避免

  1. 指向被釋放的內存或者沒有訪問權限內存的指針
  2. 避免:
    1沒有指向的指針初始化爲NULL
    2當內存使用完之後要將內存釋放,將指針置爲NULL

指針
指針是一個變量,他的值是另一個變量的地址

指針的指針
第一個指針指向包含第二個指針的地址,第二個指針指向包含實際值的位置

結構體
是一些元素的集合

Linux啓動過程

  1. 內核引導
    打開電源先bios自檢。操作系統接管硬件後,讀入/boot目錄下的內核文件
  2. 運行init
    Init程序首先要讀取配置文件 /etc/inittab
    運行級別0~6, 0停機,1單機、root、維護、禁止遠程登錄,2多用戶,3完全多用戶,4系統未使用、保留,5 x11控制檯,6正常關閉並重啓
  3. 系統初始化
    Rc.sysinit是每個運行級別都要運行的腳本。
    激活交換分區、檢查磁盤、加載硬件、其他需要優先執行的任務
  4. 建立終端
    Rc執行完之後返回init,基本系統環境配置好了,守護進程已經啓動。打開六個終端便於用戶登錄。
    運行mingetty程序,這個程序可以打開終端、設計模式。顯示一個文本登錄界面,輸入用戶名密碼,作爲參數傳給login驗證用戶身份。
  5. 用戶登錄系統
    登錄方式:命令行、ssh、圖形界面

不能訪問某個網站的可能原因

  1. 網站本身的問題,服務器故障、網站維護等。
  2. 訪問網站的部分結點出現了擁堵或者短暫性的無連接。
  3. Dns解析問題。
  4. 瀏覽器緩存了舊版本的js,需要清除緩存文件。

本機不能聯網如何排查

  1. Ping 192.168.1.1,本地循環地址,ping不通表示本地的tcp/ip協議不能正常工作
  2. Ipconfig,ping自己的ip,ping不通則網絡適配器有問題
  3. Ping 默認網關,本機到路由是否正常
  4. Ping 某網站,通了就可以上網

廣播風暴怎麼造成的

  1. 廣播風暴是廣播數據充斥網絡,佔用大量帶寬,導致正常數據包無法運行。
  2. 可能造成原因,蠕蟲病毒、交換機端口故障、網卡故障。最常見的是蠕蟲病毒和arp攻擊。

如何測試一個web頁面

  1. 功能測試
    1鏈接正確跳轉,不出現空頁面和無效頁面,無出錯信息
    2提交功能正常
    3多媒體元素可以正常加載和顯示
    4多語言支持能顯示選擇的語言
    5cookie測試,檢查cookie正常工作,按預定時間保存,刷新對cookie的影響
    6數據庫測試,檢查數據一致性錯誤(表單信息)和輸出錯誤(網速,程序設計)

  2. 界面測試
    1頁面風格統一、美觀
    2頁面佈局合理,重點內容突出
    3文字正確
    4是否支持快捷鍵

  3. 性能測試
    1壓力測試
    2負載測試
    3強度測試
    通用指標:服務器CPU佔用率,可用內存數,物理磁盤讀寫時間情況
    服務器指標:平均每秒響應次數,平均每秒業務腳本迭代次數,每秒點擊數(成功、失敗),嘗試鏈接數
    數據庫服務器指標:數據庫鏈接數量、數據庫死鎖、數據庫Cache命中

  4. 安全測試
    1SQL注入
    2登錄功能檢查,有效無效用戶名、大小寫、試多少次次數限制、是否可以不登錄就瀏覽網頁
    3超時限制,多少時間內一直沒動是否需要重新登錄
    4日誌文件,相關問題是否寫進日誌文件,是否可追蹤
    5使用了安全套接字測試加密是否正確,檢查信息完整性
    6服務器端的沒有經過授權不能放置和編輯腳本

  5. 兼容性測試
    1瀏覽器
    2操作系統
    3數據庫
    4軟件平臺

堆棧區別


  1. 編譯器自動分配釋放內存,存放函數的參數值、局部變量值。
    動態或者靜態分配
    向低地址擴展的數據結構

  2. 程序員分配釋放,程序員不釋放可能被os回收。
    就只能動態分配
    向高地址擴展的數據結構

函數指針和指針函數區別

  1. 指針函數,本質是一個函數,返回值是一個指針
  2. 函數指針 , 本質是一個指針 ,指向一個函數

C語言執行main之前做什麼
內核調用一個啓動例程,從內核中取得命令行參數和環境變量值,爲main函數執行做準備。

手撕一個排序算法
快排

冒泡

當數據庫流量大,數據大應該怎麼辦

  1. 分表
    將不常用的數據分一張結構與當前表一樣的表
  2. 索引優化和sql優化(建立非聚集索引)

如何快速在一億個數據中找到目標

一億個域名鏈表怎麼存

服務器內存不夠怎麼辦

Linux查看進程和線程的命令
單個進程的線程htop
Top -H //顯示線程
Ps -T

輸入一個URL沒有訪問到預期的網站可能的原因

  1. Dns故障
  2. 網絡斷開
  3. 服務器拒絕訪問
  4. 請求或者響應在網絡傳輸中被劫持

訪問網頁發生故障怎麼解決

多個站點中,揪出所有站點中錯誤的一個,返回403狀態信息

1000萬玉米,找到裏面壞的一根玉米.

客戶端訪問服務器端怎麼控制併發量

  1. 緩存
    提升系統訪問速度,增大系統處理容量
  2. 降級
    當服務出問題或影響到核心流程性能的時候將其暫時屏蔽,高峯後或問題解決後在打開
  3. 限流
    限定併發請求限速,達到速率可以拒絕服務或者排隊等待
    控制併發數量--------信號量機制
    控制訪問速度--------工具Guava、ratelimiter控制

兩個linux系統怎麼傳文件

  1. scp傳輸
    速度較慢,ssh通道保證傳輸安全
    (本地到遠程)scp 文件名 -用戶名@計算機ip或者計算機名稱:遠程路徑
    (遠程到本地)scp -用戶名@計算機ip或者計算機名稱:文件名 本地路徑
  2. rsync差異化傳輸
    文件同步和數據傳輸工具,客戶機和遠程文件服務器之間文件同步,本地系統從一個分區到另一個分區。
  3. 管道傳輸
  4. nc傳輸
    在兩臺電腦之間建立tcp或者udp連接,在兩個端口之間傳輸數據流,是網絡的數據流重定向。
    Dd結合nc命令網絡克隆磁盤分區
  5. 建立文件服務器
    採用網絡掛載的方式傳輸,用於經常性拷貝

Linux查看磁盤命令

  1. df 列出文件系統整體磁盤使用量
  2. du 檢查磁盤空間使用量
  3. fdisk用於磁盤分區

虛函數

  1. 如果一個類含有一個虛函數,則系統會爲這個類分配一個指針,指向一張虛函數表,表中每一項都指向一個虛函數地址。
  2. 在基類成員函數聲明前面加上關鍵字virtual即可成爲虛函數。
  3. 允許在派生類中重新定義與基類同名的函數,並且可以通過基類的指針或者引用來訪問基類和派生類的同名函數

內存佈局

多態
它是在程序運行時根據基類的引用(指針)指向的對象來確定自己具體該調用哪一個類的虛函數。

代碼段---------初始化的數據段--------未初始化的數據段--------堆---------棧
代碼段:可執行命令,共享,只讀
初始化數據段:包括全局變量和靜態變量。編程時已經被初始化
未初始化的數據段:BSS段,初始化爲0
棧:
堆:

創建動態對象,並限制大小
A* a=new A(1) //
靜態數組 A a[5];
動態數組 A *a=new a[5]

URL訪問網站過程

  1. 查詢dns獲取域名對應的ip
    查找過程:瀏覽器緩存-------本地hosts文件----------本地dns解析器緩存-------本地dns服務器緩存---------dns服務器採用迭代或遞歸方式獲得解析結果返回給客戶機
  2. 得到目標服務器的ip地址和端口號,調用系統庫函數socket,請求tcp流套接字。客戶端向服務器發送http請求報文。
  3. 服務端解析請求報文,發送http響應報文
  4. 關閉連接,tcp四次揮手
  5. 客戶端解析http響應報文,瀏覽器開始顯示html

爲什麼不能訪問谷歌,怎麼訪問

一個文件中的文本怎麼翻轉

二層網絡三層網絡

Tcp,udp分別在什麼情景下適合

  1. 用tcp的協議
    SMTP/TELNET/HTTP/FTP
    電子郵件、遠程終端接入、萬維網、文件傳輸
  2. DNS/TFTP/RIP/BOOTP,DHCP/SNMP/NFS/專用協議
    域名映射、文件傳輸、路由選擇、ip地址配置、網絡管理、遠程文件服務器、ip電話、流式多媒體通信

無線通信協議

  1. Netbeui 用戶擴展接口
  2. Ips/spx 網際包交換/用戶包交換
  3. Nwlink
  4. Tcp/ip 傳輸控制/網際協議

二分查找,冒泡,快排

SSL

  1. 用於web瀏覽器和服務器之間的身份認證和加密數據傳輸
  2. Ssl位於tcp/ip協議與各種應用層協議之間

LRU
最近最少使用頁面置換算法

路由器和交換機區別

  1. 交換機在數據鏈路層,隔離衝突域,負責子網內部的通信,根據mac地址轉發,主要用於組建局域網
  2. 路由器工作於網絡層,隔離廣播域,連接的設備屬於不同的子網,負責子網之間的通信,根據ip地址轉發,用於將交換機組建的局域網連接起來

Linux,軟連接和硬鏈接的區別
未解決文件的共享使用引入兩種連接
硬鏈接:一個inode號對應多個文件名 link或ln創建硬鏈接
硬連接特性:
文件的inode號和datablock一樣
不能對已經存在的文件創建
不能對交叉文件系統創建
不能對目錄創建,只能對文件創建
刪除一個硬鏈接文件不影響其他有相同inode號的文件
軟連接:有自己的inode號和用戶數據塊,inode中存的是文件的路徑
特性:
有自己的文件屬性和權限
可以對不存在的文件或者目錄創建軟連接
可對交叉文件系統創建
可對文件和目錄創建
刪除軟連接不影響他指向的文件,但指向的文件被刪除,軟連接變成死鏈接,當該路徑的文件重新創建時,死鏈接又變爲正常軟連接

純虛函數
純虛函數只是一個接口,是個函數聲明,需要留到子類去實現。純虛函數的基類即虛基類不能直接生成對象,只有被繼承且重寫後才能使用。

重載、隱藏、覆蓋

  1. 重載,函數具有相同的函數名,但是參數或者參數類型不同,調用時根據參數來決定調用哪一個函數。
  2. 覆蓋:在派生類中對基類的虛函數重新實現,函數名和參數都相同但是函數實現不同。
  3. 隱藏:派生類中的函數將基類中同名函數屏蔽了。
    ArrayList、Vector、HashMap、HashTable
    Arraylist 數組隊列,動態數組,隨機訪問。
    Vector 矢量隊列
    Arraylist不是線程安全的,vector是線程安全的
    Hashmap存儲(key ,value),
    Hashmap非同步,hashtable同步
    Hashmap的key、value可以爲null,hashtable的key,value不能爲null

哈希的好處,一般的應用場景,比起ArrayList有什麼優勢、區別

  1. 哈希好處:查找效率高o(1)
  2. 場景:對查找性能要求高,數據之間沒有邏輯關係

windows怎麼查看路由表
route print

查看佔用內存最高的進程
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,於Windows的任務管理器

數據結構瞭解哪些?紅黑樹?
紅黑樹是自平衡的二叉查找樹,可以在o(logn)時間內完成查找、插入和刪除

敏捷測試和瀑布模型的區別?
敏捷測試:高度迭代、週期性、及時持續響應客戶反饋。儘早開始測試。
瀑布模型:
將軟件的生命週期按照固定順序連接。

http協議的常見狀態碼
100-199 請求收到,繼續處理
200-299 成功
300-399 資源重定向
400-499 客戶端請求出錯
500-599 服務器端出錯
200 響應成功
302 跳轉,重定向
400 客戶端語法錯誤
403 服務器拒絕提供服務
404 請求資源不存在
500 服務器內部錯誤

自己電腦上不了網怎麼排查

  1. 排除接觸故障,看物理連線是否正常
  2. 排除偶然故障,更改適配器設置裏,設置本地連接或者無線網絡連接,先禁用再啓動
  3. ipconfig all 看IP地址和網卡物理地址等,看是否已經斷開
  4. ping 127.0.0.1 若發送和接受了4個包,丟包率爲0,網絡協議正常,顯示請求超時則網卡安裝或者TCP/IP協議有問題。
  5. ping 本機ip 不通則網卡驅動程序不正確,或網卡與網線連接有故障,或路由表破壞。檢查本機網卡是否連接,網絡參數是否正確(參數正確但不能ping通則應該重新安裝網卡驅動程序)
  6. ping 網關 通了則網絡連接正常,不通可能網關設備或者上網參數有問題。

微信掃碼登錄測試用例設計

  1. 掃碼後是否會跳轉,跳轉頁面是否正常
  2. 聯網或不聯網或弱網掃碼
  3. 失效二維碼掃碼

.深信服的紙杯測試用例設計

  1. 功能
    1測試裝少量、半杯、滿杯時是否漏液
    2能裝多少ml的水,是否有刻度
  2. 性能
    1最大使用次數和時間
    2保溫時間
    3長時間放置不漏水
    4被壓是否易破裂,能承受多大的力
  3. 界面
    1外觀整潔美觀
    2規格和包裝說明一樣
    3材質、手感好
    4圖案不容易掉落、不容易溶解
  4. 安全
    1材質裏有害物質的含量經過驗證
    2高溫或低溫不釋放有毒物質
    3有無缺口
    4承受運輸途中的震動和擠壓
  5. 易用性
    1形狀大小設計方便拿起
    2上大下小,運輸時可以嵌套利用空間
    3不燙手
    4防滑
  6. 兼容性
    能盛水、果汁、酒
  7. 可移植性
    在不同的地方、溫度都可以正常使用

數據庫查詢很慢,分析原因

  1. 沒有用索引
  2. i/o吞吐量小
  3. 內存不足
  4. 網速慢
  5. 查詢結果數據量過大
  6. 鎖或者死鎖
  7. 讀寫競爭資源
  8. 查詢語句沒有優化
    優化措施:
  9. 數據、日誌、索引放到不同的i/o設備上
  10. 縱向、橫向分隔表,減小表的尺寸
  11. 升級硬件
  12. 優化索引
  13. 提升網速
  14. 擴大服務器內存

裝過系統嗎?什麼系統,我現在電腦開機,開不了,進不去bios,我想把我d盤上的文件取出來,怎麼辦?
如果能進bios,用u盤拷一個pe,然後再bios裏進pe,就可以像正常操作系統一樣拷出來,如果不能進bios只能打開把硬盤取出來安裝在別人的電腦上拷文件。
PE是windows的預安裝環境,帶有有限服務的windows子系統,包括windows運行的安裝程序和腳本,連接網絡共享,自動化基本過程和執行硬件驗證需要的最小功能。

網絡拓撲畫過嗎?
網絡拓撲圖是指由網絡結點設備和通信介質構成的網絡結構圖
主要有星形、環狀、總線型

瞭解勒索病毒嗎?
利用加密算法對文件進行加密,被感染者必須拿到私鑰才能破解
通常通過郵件和廣告推廣進行傳播

在Linux上面如果系統崩潰了,需要查看CPU,內存佔用情況,使用什麼命令?查看顯存的使用情況呢?
顯存 #watch -n 10 nvidia-smi (10表示每10s刷新一次顯示結果)
結束進程 sudo kill -9 PID

你常用的Linux命令有哪些?說一下,並且註明常用的參數

  1. Cp複製文件
    -f 強制覆蓋已經存在的目標文件,不提示用戶確認
    -I 覆蓋時需要確認
    -s 不進行真正的複製,只是爲源文件創造符號鏈接

  2. mv 移動文件
    -i
    -f
    -b 在覆蓋文件前備份

  3. touch 創建文件或修改文件的修改時間
    -a 只修改文件的讀取時間
    -m 只修改文件的修改時間
    -t 使用指定時間而不是當前的系統時間

  4. rm 刪除文件
    -r 刪除指定目錄下的所有文件
    -f 強制刪除不提示

  5. cat 查看文本文件
    -n 查看文件時對每一行編號
    -b 查看文件時對空白文件不編號

  6. more 和 less 查看文件
    -p 顯示下一屏前先清屏
    -s 文件的連續空白壓縮成一個空白行

  7. find 查找文件或目錄
    -print 將查找的文件輸出到標準輸出
    -name 按照文件名查找
    -perm 按照文件權限查找
    -user 按文件屬主查找
    -type 查找某一類型

  8. grep 文本過濾
    -q 不顯示任何信息
    -s 不顯示任何錯誤信息

  9. diff 比較文件差異
    -I 不檢查大小寫
    -s 沒發現任何差異仍顯示信息

  10. file 顯示文件類型
    -b 不顯示文件名稱,只顯示類型

  11. split 分割文件

  12. Join 合併文件

  13. Pwd顯示當前工作目錄

  14. Mkdir 建立目錄

  15. Ls 查看工作目錄

  16. Tree 查看目錄樹

  17. Tar 打包或解壓文件

  18. Man 查看命令幫助

  19. History 查看歷史記錄

  20. Date 顯示或修改系統時間

  21. Clear 清除屏幕

  22. Shutdown 關機或重啓

  23. Chmod 改變文件權限

  24. Df 查看磁盤空間佔用

  25. Du 查看文件或目錄空間佔用

  26. Fdisk 分區管理

  27. Sudo 普通用戶獲取超級權限

  28. Ps 進程監控

  29. Top 系統狀態監視

  30. Ping 檢查網絡是否暢通,主機連接速度

  31. Ifconfig 配置網絡或顯示當前網絡接口狀態

  32. Route 顯示添加或修改路由表

  33. Rsync 複製文件到其他系統

  34. Netstat 顯示網絡狀態,路由表和接口狀態

  35. Traceroute 探測目的地址的路由信息

  36. telnet 測試、登錄、控制遠程主機

  37. iostat 硬盤io

Git相關命令提問

  1. 遠程倉庫
    檢出 git clone
    查看 git remote -v
    添加 git remote add
    刪除 git remote rm
    修改 git remote set -url --push
    拉取 git pull
    推送 git push
  2. 分支操作
    查看本地分支 git branch
    查看遠程分支 git branch -r
    切換分支 git checkout
    合併分支 git merge
  3. 版本
    查看版本 git tag
    刪除版本 git tag -d
    查看遠程版本 git tag -r
    Branch 查看本地所有分支
    Status 查看當前狀態
    Commit 提交
    Fetch 從遠程獲取最新版本到本地
    Pull 本地與服務器端同步
    Log 查看commit的日誌
    Add 添加文件到git index
    Config --list 看所有用戶
    Remote show 查看遠程庫

堆這個數據結構你瞭解嗎?有哪些應用場景?
場景:堆排序和優先隊列

大根堆和小根堆有什麼區別?
父節點的值大於或者小於兩個子節點

哈希表你瞭解嗎?哈希表是怎麼實現的?(數組+鏈表)
通過把碼值映射來訪問,加快查找速度

知道一致性哈希嗎?講一下
一致性哈希算法,對2^32取模,將哈希空間組變成一個虛擬的圓環,每臺服務器確定自己在哈希圓環上的位置,每臺機器定位到相應的服務器。一致性哈希算法的容錯性和可擴展性好。

單鏈表的反轉怎麼做?(我提了三種解決方法),問哪個解法最好?爲什麼?
迭代

還可以用棧

正則表達式用過嗎?$表示什麼意思?
匹配輸入字符串結束的位置

頁表的內存大小一般是多大?

C語言用過嗎?字符串拷貝函數有哪些?
Strcpy
strcpy的缺點,它存在哪些安全性的缺陷
沒有保證目標字符串的大小可以容納源字符串的大小。使用strcpy_s,strcpy_s可以兩個參數,也可以三個參數指定複製多少個字符

知道殭屍進程和守護進程嗎?講一下
孤兒進程:父進程完成或者終止後子進程仍然運行,此子進程成爲孤兒進程。當父進程退出後,子進程會被init進程收養,init進程可用調用wait,孤兒進程沒有危害。
殭屍進程:子進程退出,父進程沒有通過wait來獲取子進程的狀態,子進程的描述符還在系統中,此時的子進程變成殭屍進程。 將會佔用進程號,系統進程號有限,若過多殭屍進程導致系統沒有可用的進程號。
守護進程:後臺運行的一種特殊進程,獨立於控制終端,週期性執行某項任務或等待某些事件。

大文本的中數字怎麼進行排序
N小時用歸併排序
N大且程序有序程度高時用快排
N大且有序程度低時堆排最快

ARP協議
地址解析,將ip地址轉換爲mac地址的協議

什麼是內聯函數。
爲了消除函數調用時間的損耗,讓編譯器將函數體直接插入調用函數的地方。
是程序佔用空間和執行時間之間的權衡

黑盒測試和白盒測試。
黑盒包括等價類劃分、邊界值分析、因果圖法、場景法、正交實驗設計法、判定表驅動分析法、錯誤推斷法、功能圖分析法。
白盒包括靜態測試和動態測試
靜態測試包括代碼檢查、靜態結構分析、代碼質量度量、文檔測試
動態測試包括接口測試、覆蓋率測試、性能分析、內存分析

UDP傳輸的時候發送端和接收端信道不一樣寬怎麼辦?

鏡像文件的名稱後綴是什麼?
.iso

虛擬機如何聯網?
選用nat模式,DHCP setting,設置redhat的ip爲自動dhcp。

安裝虛擬機的時候選擇預分配和未分配的區別?

12306崩了,在用戶登錄頁面你怎麼測試?

對黑盒白盒測試方法的瞭解,對自動化測試的瞭解
1.黑盒測試是已知產品功能,測試功能能否正常使用。不考慮程序的內部結構和特性,只檢查功能是否正常、界面是否正常、對輸入數據能否產生正確輸出信息。
白盒測試根據程序控制結構設計用例。檢查內部邏輯結構、測試邏輯路徑。
白盒測試原則:每個獨立路徑至少測試一次;邏輯值要測試真和假兩種情況;內部數據結構要保證有效性;在上下邊界和可操作範圍內運行所有循環。
2.黑盒包括等價類劃分、邊界值分析、因果圖法、場景法、正交實驗設計法、判定表驅動分析法、錯誤推斷法、功能圖分析法。
白盒包括靜態測試和動態測試
靜態測試包括代碼檢查、靜態結構分析、代碼質量度量、文檔測試
動態測試包括接口測試、覆蓋率測試、性能分析、內存分析
(白盒測試方法:程序插樁技術,基本路徑法,邏輯覆蓋法,符號測試,錯誤驅動測試)
3.自動化測試優點:對迴歸測試方便;節省時間和人力;將繁瑣的任務自動化如壓力測試和併發測試;一致性、可重複性;複用性;信任度高
自動化測試缺點:發現的缺陷比手工測試少;無想象力
自動化測試工具:Seleniumn Appium Robotium
自動化測試流程:需求測試------概要設計測試--------詳細設計測試--------單元測試------集成測試------系統測試-------驗收測試

給一個登錄界面,進行測試

  1. 功能測試
    1輸入正確或者錯誤的用戶名或密碼能否登陸成功
    2登陸成功能否調轉到正確的頁面
    3用戶名和密碼長度過長或過短
    4用戶名和密碼含有特殊字符
    5是否有記住用戶名和密碼功能
    6用戶名和密碼前後有空格
    7密碼明文或者密文顯示
    8驗證碼是否容易辨認,刷新驗證碼是否好用
    9登陸界面是否可以註冊、忘記密碼,點擊後調轉的頁面是否正確
    10輸入密碼時大寫鍵盤打開是否有提示
    11不輸入時點擊提交是否會提示檢查
  2. 界面測試
    1佈局是否合理,按鈕是否整齊
    2按鈕高度和長度是否符合要求
    3界面設計風格是否統一
    4文字易懂簡潔無錯別字
  3. 性能測試
    1打開登錄界面的時間控制
    2輸入正確的登錄信息後頁面跳轉時間
    3大量用戶登錄時正常跳轉
  4. 安全性測試
    1用戶名和密碼是否以加密的方式傳給web服務器
    2用戶名和密碼的驗證服務器端驗證
    3用戶名和密碼輸入框屏蔽SQL注入攻擊、禁止輸入腳本
    4防止暴力破解,有錯誤登錄次數限制
    5多用戶在同一機器登錄
    6同一用戶在多個機器登錄
  5. 可用性測試
    1輸入完成按回車登錄
    2輸入框按Tab切換
  6. 兼容性測試
    1不同瀏覽器顯示和功能正常
    2同種瀏覽器不同版本顯示和功能正常
    3不同平臺正常工作,windows,mac
    4不同移動設備,iPhone android
    5不同分辨率正常顯示
  7. 本地化測試
    不同語言環境下顯示正常

如果要求登錄在10秒算成功,如果超出10秒怎麼測試(面試官大哥告訴我要了解整個請求過程,對過程中每一個環節進行測試,針對問題進行調優),並進行調優,如果是高併發問題,如何調優。

如何對礦泉水進行測試?(有邏輯,調理清楚)

  1. 功能
    1水瓶不漏水、能擰緊
    2瓶子裏的水能喝到
  2. 性能
    1測試要多大的壓力可以把瓶子壓破
    2在多高摔下來會摔破
  3. 易用
    1瓶子裝熱水不燙手
    2防滑
    3方便引用
  4. 安全
    1水瓶材質有害物質含量在允許範圍內
    2在過冷過熱條件下水瓶的有害物質釋放量在合理範圍內
  5. 兼容性
    能裝果汁、白水、酒精、汽油等

在三種瀏覽器中分別輸入搜索內容,如何測試反應時間?

.能否用你熟悉的語言實現數據輸入,輸出,登錄功能,大致說一下思想。

bug生命週期

  1. new,新的 bug第一次被發現,測試人員與項目負責人確認的確是bug,記錄下來
  2. Assigned 已指派的 bug New之後反饋給開發確認,開發負責人指派給一個開發處理
  3. Open 打開的 開發人員開始處理bug
  4. Fixed 修復的 開發認爲bug已經解決,並提交給開發負責人,開發負責人將bug返還給測試
  5. Pending Reset 待在測試的 bug返還給測試組之後
  6. Reset 再測試 測試組的負責人將bug給定某位測試人員
  7. Closed 關閉的 測試人員再測試時發現bug已經解決了
  8. Reopen 再打開的 測試後發現bug仍然存在就再返還給開發組
  9. Pending Reject 拒絕中 開發人員認爲傳回來的bug是正常的而不是bug的時候就拒絕接受
  10. Rejected 被拒絕的 測試負責人收到被開發拒絕的bug,並發現這已經是一個正常行爲,不能算做bug了
  11. Postponed 延期 特殊的bug需要擱置一段時間

get和put

  1. get是請求獲取request url所標識的資源
  2. put是請求服務器存儲一個資源,由request url作爲標識

軟件響應太慢的原因
物理內存或虛擬內存不夠

sizeof和strlen的區別
sizeof是數據類型所佔的空間大小,strlen是字符串長度
sizeof是運算符,strlen是函數
子函數傳參,sizeof會把傳進來的數組當指針,sizeof爲4

get post 區別

  1. get是從指定資源請求數據
  2. post是向指定資源提交要被處理的數據
    get post
    後退/刷新 無害 重新提交
    緩存 能被緩存 不能被緩存
    編碼 url編碼 多種編碼
    歷史記錄 參數保留在瀏覽器歷史記錄 不會保留
    數據長度限制 向url發送數據,長度受限制 無限制
    數據類型限制 只允許ACII字符 無限制,允許二進制
    安全性 參數直接暴露在url,安全性較差 參數不會保存在瀏覽器歷史記錄或者web服務器,安全性較好
    可見性 數據在url中對所有人可見 不會顯示在url
    傳參方式 get參數通過url傳參 post放在request body裏

request和urllib區別,

git怎麼提交代碼
git conmmit將文件提交到倉庫
git remote add origin 遠程倉庫地址 關聯到遠程庫

git pull和fetch區別
git pull 從遠程獲得最新版本,並merge到本地
git fetch 從遠程獲取最新版本,不會自動merge

詳細說下等價類劃分
把全部輸入數據合理劃分爲若干個等價類,每個等價類中取一個數據作爲測試輸入條件,用少量的代表性測試數據獲得較好的結果。
設計測試用例時不僅要考慮有效等價類,還要考慮無效等價類。

講一下軟件開發流程。

  1. 需求分析 初步瞭解用戶需求,列出開發系統的功能模塊、界面,並且向用戶確認
  2. 概要設計 對軟件系統設計進行考慮,包括基本處理流程、系統組織、模塊、接口等
  3. 詳細設計 描述具體模塊的主要算法、數據結構、類,子模塊設計。
  4. 編碼 根據《軟件系統詳細設計報告》的設計要求進行編寫工作,實現模塊功能。
  5. 測試 測試人員和用戶
  6. 軟件交付 測試達到要求後開發者向用戶提交開發的目標安裝程序,《用戶安裝手冊》《用戶使用指南》、需求報告、設計報告、測試報告等
  7. 驗收 用戶驗收
  8. 維護 根據用戶需求或者環境變化,對應用程序進行全部或者部分修改。

講一下集成測試和系統測試,並且Bug定位屬於什麼測試。
1.集成測試:針對模塊接口有關問題,對已經進行了單元測試的模塊拿來構造一個滿足設計的程序結構,採用增量集成。有自頂向下和自底向上集成。
2.系統測試:根據系統整體需求說明書進行黑盒測試。驗證產品系統是否符合需求規格。包括軟件、硬件、數據、接口測試。在系統實際運行環境中進行。
區別:先做集成測試,等問題修復後再做系統測試。集成測試用例比系統測試更詳細。
應用場景:集成測試程序內部結構特別是程序接口測試,白盒黑盒結合。系統測試按照需求規格說明書進行整個產品全面測試,一般是黑盒。
Bug定位應該屬於單元測試吧,單元測試是最小設計單元驗證,保證模塊正確編碼。

問了幾個網絡L2/L3協議。
L2數據鏈路層:網橋、交換機、網卡,兩個網絡實體之間提供數據鏈路的創建、維持、釋放的管理,對幀定界、同步、收發順序控制。流量控制、差錯控制。
PPP/wifi/hdlc/
L3網絡層:路由器,提供路由和尋址功能,兩終端系統互聯並決定最佳路徑。擁塞控制和流量控制。
IP網絡互連協議/ARP地址解析協議/RARP反向地址轉換協議/ICMP在主機路由器之間傳遞控制信息/IGMP組管理協議向相鄰路由器報告自己組的情況/RIP路由信息協議,網關和主機之間路由選擇信息/OSPF開放式最短路徑優先/BGP邊界網關協議,連接獨立的路由選擇協議

如何設置一個linux log系統,描述設計思路,功能模塊。
時間、文件、行號等有用信息,然後封裝好。設定等級,不同的log信息分開裝,比如錯誤信息、警告信息、記錄流程信息。添加一些命令,比如詳細顯示,粗略顯示等。輸出目的地,比如文件或控制檯等

log信息有上百萬條,該怎麼處理,成百上千又該怎麼處理。

關於問到的協議,有哪些測試,(好吧,沒聽過)
一致性測試:協議本身和協議規範的符合程度
互操作性測試:某一協議與其他協議之間互操作互通信能力
性能測試:協議性能指標,數據傳輸率、連接時間、執行速度、吞吐量、併發度
健壯性測試:惡劣環境下運行能力,干擾報文、通信故障、信道切斷

交換機測試的一些東西。

  1. 二層交換性能測試
    Mac地址學習速度
    Mac地址表容量
    端口地址數量限制
    轉發性能
    超長幀轉發性能
    丟幀率
    地址處理
    錯誤幀過濾
    廣播轉發性能
    廣播抑制功能
    Vlan堆疊測試
    端口鏡像功能測試
    優先級控制
  2. 三層交換性能測試
    第三層地址學習
    路由表容量
    Ospf路由震盪
    吞吐量
    延遲
    丟包率
    背靠背
    有效吞吐率
  3. 功能測試
    Arp功能測試
    擁塞控制
    板內交換性能測試
    最大vlan數量測試
    路由表容量測試
    Mac地址訪問控制表測試
  4. 可靠性測試
    主控板和交換矩陣冗餘
    電源冗餘
    業務卡熱拔插
    設備防arp攻擊
    設備防icmp攻擊
    穩定性測試

linux過濾文本中的某些字段。
Grep,
Awk
Sed
Grep主要用於搜索字符串,sed和awk主要用於處理文本
Grep主要是正則表達式匹配,awk功能比較複雜,sed和grep相似,awk最強大

局域網設備開放端口,21/8080/53端口對應服務
21FTP,20用於數據傳輸,21用於控制命令傳輸(FTP是TCP連接)
53,UDP端口,DNS域名解析服務
8080,WWW代理服務,網頁瀏覽

安全攻擊的手段方法,比如你要攻擊深信服官網,要做哪些動作

  1. Dos攻擊,發送大量請求使服務器癱瘓 ping泛洪、TCP SYN泛洪 殭屍網絡
  2. ARP攻擊,MAC翻譯錯誤導致計算機內身份識別衝突
  3. Xss跨站腳本攻擊, 網頁中嵌入惡性腳本程序
  4. SQL注入,就是用應用程序將惡意的SQL命令注入後臺數據庫
  5. Csrf 跨站請求僞造 僞造成受信任的用戶訪問

內部架構,後端是什麼樣的服務器怎麼看

獲取管理員權限有幾種方式

  1. Su root 切換到管理員權限,su 普通用戶名 切換回普通用戶
  2. Sudo 讓普通用戶獲得管理員權限

常用的掃描工具有哪些
Appscan
Burp suite
Zap
Sqlmap

滑動窗口
在任意時刻,發送方和接收方都維持一個允許連續發送或者接收的幀的序號,稱爲發送窗口和接收窗口。發送窗口大小由接收方確定,目的是控制發送速度,避免溢出和網絡擁塞。

裝過系統麼,裝系統的過程中都發生了什麼?

給你50臺虛擬機同在一個局域網,如何同時在這50臺虛擬機上安裝一個測試工具,測試工具是一個可執行文件

百度無法訪問了怎麼排查什麼問題,後面補充除了qq其他都無法訪問。
可能是dns解析的問題,ping檢查,固定ip地址,清空dns緩存
瀏覽器自身的問題 可能被惡意篡改
網絡防火牆的問題
網絡協議和網卡驅動問題
Host文件篡改
Cpu佔用率100%

兩臺pc中間有兩臺路由,問pc1和pc2的源ip目的ip源mac目的mac
如:A訪問B,
首先對比是否同一子網,如果是,檢查ARP表,有B的MAC就直接發送,沒有就發送ARP請求.如果否,發送到默認網關C,源IP爲A,源MAC爲A,目的IP爲B,目的MAC地址爲C,
C接收到這個包,檢查路由表,發送到下一跳D,源IP爲A,源MAC爲C,目的IP爲B,目的MAC爲D……
如此循環,直到發送到B.
動態路由,靜態路由,直連路由哪個優先級更高
直連路由不需要配置,路由器自動感知鏈路,自動關聯接口
靜態路由,網絡管理員使用命令配置路由
動態路由,路由器自動建立路由表,根據網絡拓撲狀態自動調整

蘋果系統爲什麼運行速度比安卓系統快

  1. 安卓系統應用程序運行在基於linux內核之上的虛擬機中,應用程序用java編寫,java內存機制不適合使用在移動設備上。Java垃圾回收機制,規定內存低於某個值就會選擇性關閉程序,平常程序常駐內存,下次打開就很快。但大型軟件運行時因內存不足就關閉其他應用,頻繁訪問內存,導致變慢。 蘋果系統沒有垃圾回收機制,用戶返回桌面時程序會暫停,不會後臺運行。
  2. Ios最先響應屏幕,響應順序爲touch media service core。Android 響應順序是application framework library kernel ,優先級較低
  3. Ios基於gpu加速,減輕cpu負擔,Android 嚴重依賴cpu運算靠程序本身加速和渲染。
  4. Ios系統封閉性,對app開發框架限制。Android開發應用要兼容cpu gpu
    解釋一些重載,重寫,多態以及區別
    多態:採用動態綁定技術,通過基類的指針來操縱對象,如果對象是基類對象,就調用基類函數,如果是派生類對象就調用派生類函數。一個操作隨着傳遞或者捆綁對象類型的不同能做出不同的反應。

OSPF與RIP的定義與區別
Rip分佈式的基於距離向量的路由選擇協議,ospf分佈式的基於鏈路狀態的路由選擇協議
Rip和相鄰的路由器交換路由表,固定時間間隔交換
Ospf向本自治系統所有路由器發信息,交換的是本路由器周邊網絡的拓撲,當網絡狀態改變時,洪泛法發送信息
Rip知道當前路由器到所有路由器的距離以及下一跳路由器是哪個,不知道全網的拓撲結構。好消息傳的快,壞消息傳的慢,慢收斂
Ospf快收斂
Rip用udp傳送,ospf用ip數據報傳送

1、HTTP/HTTPS的區別

  1. http是超文本傳輸協議,明文傳輸。https是用SSL協議加密後的http協議,屬於加密傳輸協議。
  2. http端口爲80,https端口爲443.
    3.http連接簡單,無狀態。https加密傳輸、身份認證,安全。

2、SSL如何加密
1.身份驗證機制
數字簽名來驗證通信對端的身份,非對稱密鑰算法實現數字簽名
2數據傳輸機密
利用對稱密鑰算法對通道數據加密解(對稱:DES/3DES/AES)
3消息完整性驗證
避免網絡中數據被篡改,MD5/MAC算法保證消息完整性。
4非對稱密鑰算法保證密鑰本身安全
利用RSA算法加密傳輸密鑰
5 PKI保證公鑰的真實性

4、殭屍網絡是什麼
通過一種或多種傳播手段,使大量的主機感染殭屍程序的病毒,在控制者和被感染者之間形成一個可控制的網絡。

5、殭屍網絡被感染的地方是什麼

  1. 攻擊漏洞,在shellcode執行bot程序注入代碼
  2. 郵件病毒,郵件附件中有殭屍程序或者執行bot程序的連接,通過郵件客戶端的漏洞執行
  3. 惡意網站腳本
  4. 特洛伊木馬僞裝成有用的軟件

6、瞭解DNS協議嗎
域名解析

7、是一個怎樣的結構
報文頭—查詢請求----應答----授權應答----附加信息

8、爲什麼他要是分佈式的呢
當今因特網數量大,主機數持續增長,如果是單點式則會有單點故障,延遲,開銷大。

9、瞭解HOST嗎
存儲計算機網絡中各個節點信息的計算機文件,負責將主機名稱映射到ip地址,用於補充dns的功能,用戶可以對hosts文件進行控制

16、死鎖有什麼處理方法:

  1. 預防死鎖
    資源一次性分配
    可剝奪
    資源有序分配
  2. 避免死鎖
    銀行家算法,(分配前評估,若分配後導致死鎖則不分配)
  3. 檢測死鎖
    建立資源分配表,進程等待表
  4. 解除死鎖
    從其他進程剝奪資源給死鎖進程
    撤銷死鎖進程
    19、其實這個現在也不經常用了,那好吧下一個問題強制結束一個進程用什麼命令
    先用 ps -ef查看殺死進程的pid
    然後 kill -pid
    避免殭屍進程,殺死父進程前應該殺死所有子進程

21、除了kill -9以外還可以有什麼數字
這個會使進程在運行時強制終止,進程結束後不能自我清理會導致資源無法正常釋放。使用這個時必須ps -ef確保沒有留下殭屍進程。

22、各個數字分別有什麼作用

23、那你有沒有思考過kill -9以後操作系統內部發生了什麼呢

TCP首部,UDP首部
Tcp :源端口 16 目的端口 16 序列號32 迴應序號32 tcp頭長度4 reserved 6 控制代碼 6 窗口大小16 偏移量16 校驗和16 選項32(可選)
Udp:源端口 16 目的端口 16 長度 16 校驗和 16

HTTP1.0,1,1的區別
1.http1.0默認短連接,瀏覽器和服務器之間每一次http操作就建立一次連接,任務結束就終端。
2.http1.1默認建立長連接,當網頁打開後客戶端和服務器之間傳送http數據的tcp連接不會關閉,如何客戶端再次訪問這個服務器的網頁,會繼續使用這條已經建立好的連接。

狀態碼307(臨時重定向)

  1. 100-199表示請求收到繼續處理
  2. 200-299表示成功
  3. 300-399表示資源重定向
  4. 400-499表示客戶端請求出錯
  5. 500-599表示服務器端出錯
  6. 200響應成功
  7. 302跳轉、重定向
  8. 400客戶端有語法錯誤
  9. 403服務器拒絕提供服務
  10. 404請求資源不存在
  11. 500服務器內部錯誤

2.對軟件測試這個工作有什麼瞭解,平時一般通過什麼途徑自學
軟件測試是爲了捕捉軟件中的錯誤,是一種經濟高效的保證軟件質量的方法。軟件測試快速發展,充滿挑戰。一些傳統測試可能會被自動化測試替代,但對於自動化軟件開發、安全測試、性能測試、可靠性測試等還是需要專業人員操作。伴隨着雲計算、物聯網、大數據的發展,測試技術可能會有更新,需要更加了解應用場景,具有更深厚的測試基礎。
軟件測試需要早發現問題和發現別人還沒發現的問題,這樣才能使解決問題的成本降低。
測試項目的具體工作:搭建測試環境、編寫和執行測試用例、寫測試計劃和報告、提交bug表單並跟蹤bug修改、編寫腳本執行自動化測試、進行性能測試壓力測試等

三次握手

  1. 第一次握手,建立連接時,客戶端發送SYN包給服務器,並進入SYN_SENT狀態,等待服務器確認
  2. 第二次握手,服務器收到SYN包,必須確認客戶端的SYN,自己也要發送一個SYN,於是發送SYN+ACK包,服務器進入SYN_RECV狀態
  3. 第三次握手,客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK,發送完畢後服務器和客戶端都進入ESTABLISHED狀態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章