个人2020春招面经记录
delete每次刪除一行,truncate和drop一次性刪除所有數據
truncate只能對table,delete可以是視圖和表
速度drop>truncate>delete
刪除表用drop, 保留表將數據刪除,和事務無關用truncate,和事務有關用delete
Truncate 比 delete快,使用的系統和事務日志資源少。
沒有備份謹慎用drop和truncate
Truncate后,表和索引的空間會恢復到初始大小,delete不會減少表和索引所占空間,drop將表所占空間全部釋放掉
Delete每次刪除一行,刪除操作保存在事務日志,方便回滾。Truncate刪除行不能恢復。
tcp面向對象的連接,三次握手,udp無連接傳輸
tcp可靠、有序、不丟失,udp不可靠傳輸
tcp面向字節流,udp面向數據報
tcp有擁塞控制和流量控制,udp沒有
tcp點到點,udp一對一、一對多、多對一、多對多
tcp首部20字節,udp首部8字節
tcp全雙工可靠信道,udp不可靠信道
tcp : smtp telnet http ftp ,udp: dns tftp rip dhcp snmp nfs
Unity 3D:誅仙,王者榮耀,仙劍,神廟逃亡
虛幻引擎:絕地求生
Cry engine 3:末日之戰
白鷺egret:
Cocos2D:消消樂
略
發送RST包表示強制關閉tcp連接
關系數據庫的三個完整性
實體完整性、參照完整性、用戶定義完整性
五個約束:
Not null unique primary key foreign key check
http端口80,https端口443
構造函數沒用返回值,返回的是void*
C和java的優點
C
語言簡潔、靈活方便;
運行速度快、效率高
語法限制不嚴格、程序設計自由度大
缺點:
容易出錯
可移植性不好
Java
跨平臺能力強
多線程
安全可靠
庫函數豐富,節省開發時間
缺點:
靈活性不足
Java的protect。Public。private的范圍
Public可以跨類和跨包訪問
Private只能被該類的對象訪問,子類不能訪問,不能跨包
Protect只能被類本身和子類訪問
Default在同一個包中訪問
一個球100樓
井蓋為什么圓
圓的可以滾,方便移動
方便工人疏通下水道
防止井蓋豎直掉落
怎么測試微信的點贊功能
功能測試:
是否可以點贊
取消點贊
多次點贊
點贊順序按時間排列
點贊顯示頭像和名稱
點贊后能否進行評論
點贊之后退出頁面點贊消息是否依然存在
多用戶點贊再次打開朋友圈是否可以看誰點贊了
接口測試:
點贊后共同好友是否收到提示
相同好友的提示信息是否按時間順序排列
相同好友點贊是否顯示頭像和名稱
兼容性測試:
手機端和電腦端是否都可以進行點贊和點贊取消功能
不同移動端是否可以點贊和點贊取消
可用性:
弱網是否可以點贊
網絡斷開是否可以點贊
用戶點贊幾秒后看到點贊成功
多用戶點贊時能否收到全部提示信息
安全性測試:
點贊是否泄漏微信用戶相關信息
測試整個流程
需求分析-------測試計劃-------測試設計------測試用例編寫------測試執行------bug跟蹤管理-------測試報告生成
Bug生命周期:
發現---------分配-------修復-------反測------關閉
職業規劃
高級測試工程師:
3~4年測試經驗,分析需求、獲得測試策略方案、參與同行評審、為其他初級測試工程師當顧問、拓展編程語言、操作系統、網絡、數據庫,具有豐富的行業知識。宏觀把控能力,偏向技術管理。補充新的知識、緊跟潮流、有強大技術背景做支持、合理安排團隊成員
狀態碼
200,客戶端請求成功
206,實現斷點續傳或者同時分片下載
300,可選重定向,被請求的資源有一系列可供選擇的反饋信息,由瀏覽器/用戶自行選擇
301,永久重定向,被永久移動到新的位置
302,臨時重定向,請求資源臨時從不同的url中獲得
304,客戶端發送一個帶條件的get請求,該請求未被允許,文檔內容未被改變
403,服務器收到請求,但拒絕提供服務
單元測試通常在編碼階段做的
每一層的協議
物理層:802.3
數據鏈路層:hdlc(高級數據鏈路控制協議,遠程用戶資源共享和信息交互)、ppp(點對點協議,在點對點連接傳輸數據包的方法)
網絡層:ip(網際協議,負責網絡通信)、icmp(控制報文協議,ip主機與路由器之間傳遞信息)、arp(地址解析協議,ip地址獲得物理地址)
傳輸層:tcp、udp
應用層:ftp、http、dns(域名解析,域名映射到ip地址)、telnet、smtp
軟件測試:一種促進鑒定軟件正確性、完整性、安全性、質量的過程。在規定的條件下對程序進行操作,發現程序錯誤,衡量軟件質量,對其是否滿足設計要求進行評估的過程。
瀑布模型:
項目開發的進程從上一個階段流到下一個階段,上一項活動的工作對象作為輸入,將輸入的成果作為內容傳給下一項活動。
軟件生命周期:制定計劃、需求分析、軟件設計、程序編寫、軟件測試、運行維護。
Ram隨機存儲內存,斷電丟失
Rom只讀內存,只能讀出事先存的數據
A連接B就要把A的公鑰復制到B
數據結構的邏輯結構:集合、樹形、線性、圖形
物理結構:順序、鏈式、索引、散列
軟件質量特性:
功能性、可靠性、易用性、效率、維護性、可移植性
Ip數據報字段
版本
首部長度
區分服務
總長度
標識
標志
片偏移
生存時間
協議
首部校驗和
源地址
目的地址
軟件交付前的測試
單元、集成、系統、確認
測試用例一般需要寫:
編號、名稱、級別、條件、操作步驟、預期結果、實際結果、執行結果。
測試用例由測試出入數據和預期輸出結果兩部分組成
結構化程序的三種基本邏輯結構是:
順序結構、選擇結構、循環結構
Unix
建立文件目錄 mkdir dirname
刪除文件目錄 rmdir dirname
改變文件目錄 mv oldname newname
好的軟件結構外觀呈橢圓形
軟件實施活動的進入準則
需求工件被基線化
詳細設計工件被基線化
構架工件被基線化
QA : 質量保證
QC:質量控制(QC是測試啊)
QM:質量管理
軟件測試的二八原則
百分之八十的缺陷出現在百分之二十的代碼中,體現了缺陷的群集現象
黑白灰補充
黑盒主要是發現:
是否有不正確或者遺漏的功能
在接口上輸入是否能正確接收,能否輸出正確結果
是否有數據結構錯誤或者外部信息訪問錯誤
性能是否滿足要求
是否有初始化或者終止性錯誤
白盒對程序模塊的檢查:
對程序模塊所有獨立的路徑至少測試一遍
對邏輯判定為真或者假的情況都至少能測一遍
循環邊界或者循環界限內執行循環體
測試內部數據結構的有效性
灰盒測試:
主要關注輸出對于輸入的正確性,關注輸出也關注內部結構但關注內部不像白盒那樣詳細。解決的問題是針對有時候輸出正確但其實內部邏輯是錯的,但是全用白盒效率會很低。
軟件容錯:
對于自身的錯誤具有屏蔽性
可以從錯誤狀態恢復到正常狀態
發生錯誤時能完成預期的功能
在一定程度上具有容錯能力
實現容錯技術主要是利用冗余
結構冗余、信息冗余、時間冗余、冗余附加技術
掃碼的測試點:
功能:
是否可以保存掃碼圖片,用相冊圖片進行掃碼
掃殘缺、模糊是否成功
過小的二維碼是否自動放大
二維碼的有效期驗證,失效的是否可以掃
跳轉的頁面是否正常
光線暗是否會提示打開手電筒
掃碼成功和失敗是否有不同的提示音
掃碼過程中來電中斷會怎么樣
性能:
弱網
Cpu、內存占用、耗電
界面:
美觀大方
安全:
跳轉頁面非法是否有提示
終止進程
Kill
默認-15,系統發送信號給程序,程序接到后先釋放自己的資源再停止,-9是exit的意思,不會被系統阻塞,能順利殺掉進程
http常見狀態碼
1xx 信息,服務器正在處理請求
2xx 成功,請求已正常處理完畢
3xx 重定向,需要額外操作完成請求
4xx 客戶端錯誤,客戶端原因導致服務器無法處理請求
5xx 服務器錯誤狀態碼,服務器原因導致請求錯誤
200一切正常、204請求成功但沒有內容返回、206服務器完成部分get請求
301永久重定向、302臨時重定向、303資源存在另一個URL,應使用get訪問、304客戶端附帶條件但是條件不滿足、307臨時重定向
400請求報文存在語法或者參數錯誤,服務器不理解、401發送請求需要http認證,但是認證失敗、403請求資源訪問被服務器拒絕、404找不到請求資源、500服務器執行請求時出錯、502網關錯誤、503服務器超負載或者正在維修,無法處理請求、504網關超時。
白盒測試的各種區別:
語句覆蓋:判斷語句都能執行一次
判定覆蓋:比語句覆蓋增加了false的情況
條件覆蓋:對判定條件都取一次,比如a>5&&b<0就取a>5&&b>=0和a<=5&&b<0
判定條件覆蓋:每個判定真假各一次,每個判定中條件各一次。a>5&&b<0就取a>5&&b>=0和a<=5&&b<0和a>5&&b<0
組合覆蓋:a>5&&b<0就取取a>5&&b>=0和a<=5&&b<0和a>5&&b<0和a<=5&&b>=0所有條件組合
路徑覆蓋:走完所有路徑(特別是if嵌套的時候)
數據庫事務的四種特性
原子性、一致性、隔離性、持久性
Tcp粘包、拆包:
粘包、拆包發生原因
發生TCP粘包或拆包有很多原因,現列出常見的幾點,可能不全面,歡迎補充,
1、要發送的數據大于TCP發送緩沖區剩余空間大小,將會發生拆包。
2、待發送數據大于MSS(最大報文長度),TCP在傳輸前將進行拆包。
3、要發送的數據小于TCP發送緩沖區的大小,TCP將多次寫入緩沖區的數據一次發送出去,將會發生粘包。
4、接收數據端的應用層沒有及時讀取接收緩沖區中的數據,將發生粘包。
等等。
粘包、拆包解決辦法
通過以上分析,我們清楚了粘包或拆包發生的原因,那么如何解決這個問題呢?解決問題的關鍵在于如何給每個數據包添加邊界信息,常用的方法有如下幾個:
1、發送端給每個數據包添加包首部,首部中應該至少包含數據包的長度,這樣接收端在接收到數據后,通過讀取包首部的長度字段,便知道每一個數據包的實際長度了。
2、發送端將每個數據包封裝為固定長度(不夠的可以通過補0填充),這樣接收端每次從接收緩沖區中讀取固定長度的數據就自然而然的把每個數據包拆分開來。
3、可以在數據包之間設置邊界,如添加特殊符號,這樣,接收端通過這個邊界就可以將不同的數據包拆分開。
等等。
Mysql數據恢復到任意時間點
(對誤刪除的數據恢復就可以恢復到任意一個時間點)
先做全量備份,在基礎上回放增加的binlog直到指定的時間點
恢復到備份時間點是mysqldump
一般用mysqldump作完全備份用bin-log做增量備份
ArrayList和LinkedList的區別
2.對于隨機訪問get和set,ArrayList覺得優于LinkedList,因為LinkedList要移動指針。
3.對于新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。
Linux文件的常用命令
Mkdir創建指定名的文件
Ls打印當前目錄清單
Cd切換目錄
Pwd查看當前目錄的完整路徑
Rm刪除一個目錄中的文件
Rmdir刪除空目錄
Mv移動文件或將文件改名
Cp復制文件或目錄
Touch修改文件時間戳或者新建一個不存在的文件
Cat連接文件或者標準輸入打印,顯示文件內容
More,類似于cat,more一頁一頁的顯示,sapce鍵就下一頁,b就回退一頁
Tail,從指定點開始將文件輸出到標準輸出流
Osi同層水平方向傳送的數據單元是pdu協議數據單元
相鄰層的接口叫idu接口數據單元
相鄰層之間的服務是通過SAP服務訪問點進行的
3G的三種制式
移動的TD-SCDMA
聯通的WCDMA
電信的CDMA2000
內聚性最高的是邏輯內聚
C語言的基本單位是函數
成員函數不一定是內聯函數、成員函數可以重載、成員函數是靜態的
C語言賦值不能連等
進程通信方式:管道、消息隊列、共享內存、信號量、socket、信號、文件鎖
線程通信方式:共享內存、消息傳遞
Continue只能跳出本次循環,繼續下一次循環。For是可以跳出整個循環的
字符串拷貝函數
Char* cpy(char *des, char *src)
{
Char *p=des;
While(*des++=*src++)
Return p;
}
屬于ddl(數據定義語言data define language)的有哪些
Create alter drop
屬于dml(數據庫操縱語言 data manipulation language)
Select update insert delete
數據庫的范式
第一范式:添加一個規范要求,所有域都是原子性的,即數據庫的每一列都是不可分割的院子數據列
第二范式:數據庫表中的每個實例或記錄都必須可以唯一的區分
第三范式:任何非主屬性不依賴于其他非主屬性
第四范式:任何非主屬性不能對主鍵子集依賴
ER圖
矩形----實體
橢圓形—屬性
菱形—-實體聯系
static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:
靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。
而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
指令周期由若干機器周期組成,1機器周期=6狀態周期=12時鐘周期
滲透測試
通過模擬惡意黑客攻擊方法,評估計算機網絡系統安全。
主鍵外鍵索引
主鍵:能唯一標識表中的一條記錄的屬性組
外鍵:用于兩個表的數據連接
索引:就是為了讓查詢效率加快
唯一鍵:保證對應字段數據的唯一性
OSI七層模型
物理層、數據鏈路層、網絡層(icmp、igmp、ip、arp)、傳輸層(tcp、udp)、會話層、表示層、應用層(http、ftp、dhcp、smtp、dns、telnet、pop3)
優點:
開放的標準化接口、統一結構、模塊化設計、網絡分層
數據在產生的過程中每一層處理都會在前面封裝上該層相應的數據,封裝上去的這層就是協議數據單元(PDU)
原則:
同一層通信
逐層傳輸,不能躍層
每一層使用下層提供的服務,向上層提供服務
設備:
物理層:網卡、網線、集線器、中繼器、調解調制器
數據鏈路層:網橋、交換機
網絡層:路由器
Java垃圾回收機制
后臺創建守護進程,在內存緊張時自動跳出來把內存的垃圾進行回收,保證程序正常運行
引用計數法或可達性分析法判斷是不是垃圾
過程:
1.標記 2清除 3.壓縮
垃圾回收機制能自動釋放內存空間,減少編程負擔。是java安全性策略的重要部分。
影響性能,需要判斷有用無用。
棧的使用場景:
函數調用與返回、表達式求值、括號匹配、進制轉化
隊列應用場景:
實現多任務的重要機制
迭代器的作用:
檢查容器內元素并遍歷元素的數據類型
Linux刪除目錄
Rm -rf 目錄名字
-r表示向下遞歸、-f表示直接強行刪除
單元測試是白盒測試、集成測試是黑盒測試
指針數組和數組指針
指針數組是一個數組,數組里面的元素都是指針
數組指針,是指針,指向數組的指針
Const和static不能同時修飾成員
指針和引用的區別
Static關鍵字:
在全局變量前加上關鍵字static,全局變量就定義成一個全局靜態變量.
靜態存儲區,在整個程序運行期間一直存在。
初始化:未經初始化的全局靜態變量會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化);
作用域:全局靜態變量在聲明他的文件之外是不可見的,準確地說是從定義之處開始,到文件結尾。
在局部變量之前加上關鍵字static,局部變量就成為一個局部靜態變量。
內存中的位置:靜態存儲區
初始化:未經初始化的全局靜態變量會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化);
作用域:作用域仍為局部作用域,當定義它的函數或者語句塊結束的時候,作用域結束。但是當局部靜態變量離開作用域后,并沒有銷毀,而是仍然駐留在內存當中,只不過我們不能再對它進行訪問,直到該函數再次被調用,并且值不變;
在函數返回類型前加static,函數就定義為靜態函數。函數的定義和聲明在默認情況下都是extern的,但靜態函數只是在聲明他的文件當中可見,不能被其他文件所用。
函數的實現使用static修飾,那么這個函數只可在本cpp內使用,不會同其他cpp中的同名函數引起沖突;
warning:不要再頭文件中聲明static的全局函數,不要在cpp內聲明非static的全局函數,如果你要在多個cpp中復用該函數,就把它的聲明提到頭文件里去,否則cpp內部聲明需加上static修飾;
在類中,靜態成員可以實現多個對象之間的數據共享,并且使用靜態數據成員還不會破壞隱藏的原則,即保證了安全性。因此,靜態成員是類的所有對象中共享的成員,而不是某個對象的成員。對多個對象來說,靜態數據成員只存儲一處,供所有對象共用
靜態成員函數和靜態數據成員一樣,它們都屬于類的靜態成員,它們都不是對象成員。因此,對靜態成員的引用不需要用對象名。
在靜態成員函數的實現中不能直接引用類中說明的非靜態成員,可以引用類中說明的靜態成員(這點非常重要)。如果靜態成員函數中要引用非靜態成員時,可通過對象來引用。從中可看出,調用靜態成員函數使用如下格式:<類名>::<靜態成員函數名>(<參數表>);
面向對象編程的三大特性是 封裝、繼承、多態。
封裝:是指對象把自己的數據和對數據的操作封裝在了一起;
繼承:是指子類對父類的繼承,子類把父類的數據和對數據的操作繼承了過來,同時又增添了自己的數據和對數據的操作;
多態:主要有兩種類型的多態。一種是操作的名稱的多態,即多個操作的名稱一樣,但接受的消息類型必須不同;另一種是與繼承相關的多態,來自不同類型的對象對同一操作的調用產生不同的效果。 在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。
Linux查看端口占用
Netstat
區分前端和后端的問題
如何區分前端問題和后端問題?
前臺的bug通常是功能、界面和兼容性等有關;
后臺的bug與邏輯、性能和安全性有關。
與數據相關的錯誤、排序問題大多是后臺問題;
對于APP頁面toast提示可能是后臺給的,可能是APP給的。
(1)檢查接口
前端和后臺之間是通過接口文件相互聯系的,測試人員可以通過查看接口文件,來區分前端和后臺bug。
(2)情況分析
a、檢查請求的數據是什么?反饋的數據又是什么?
通過抓包工具來進行抓包分析。
大多數的瀏覽器都有自帶的抓包插件,如 FireFox 的 FireBug 插件,Chrome、360急速模式、搜狗高速模式自帶的 DevelopTools 插件(F12開啟),在 NetWork 中可以看到當前頁面發送的每一個http請求。請求接口、傳參、響應三部分來判斷Bug,另外,也可以在瀏覽器的控制臺進行js代碼調試定位。
1)請求接口URL是否正確
如果請求接口URL不正確,為前端Bug;
2)http請求中的參數是否正確
如果http請求中的參數不正確,為前端Bug;
3)如果接口URL和參數都正確,查看響應內容是否正確
如果這種情況下響應內容不正確,則為后端Bug
4)如果JS基礎比較好的話,也可以在瀏覽器的控制臺中輸入JS代碼進行調試。
b、根據接口的文件,檢查數據是否正確。
如果發送的數據是正確的,但是后臺反饋的數據是不符合需求的,那就是后臺的問題。
如果前端沒有請求接口,或者請求的時候發送數據與需求不符,那這個時候就是前端的問題了。
測試用例的設計方法:
等價類劃分
邊界值分析
錯誤推斷
判定表
正交實驗
Having和where的區別
having語句一般結合GROUP BY一起使用的
Having短語與WHERE的區別
WHERE子句作用于基表或視圖,從中選擇滿足條件的元組。HAVING短語作用于組,從中選擇滿足條件的組。where是從查詢滿足條件的數據,用于查詢數據之前;having用于在查出的數據中挑選滿足條件的數據,在數據查出來之后處理。
軟件測試5C標準
Correct(準確):每個組成部分的描述準確,不會引起誤解
Clear(清晰):每個組成部分的描述清晰,易于理解
Concise(簡潔):只包含必不可少的信息,不包括任何多余的內容;
Complete(完整):包含復現該缺陷的完整步驟和其他本質信息
Consistent(一致):按照一致的格式書寫全部缺陷報告
左連接右連接區別
left join (左連接):返回包括左表中的所有記錄和右表中連接字段相等的記錄。
right join (右連接):返回包括右表中的所有記錄和左表中連接字段相等的記錄。
inner join (等值連接或者叫內連接):只返回兩個表中連接字段相等的行。
full join (全外連接):返回左右表中所有的記錄和左右表中連接字段相等的記錄。
軟件測試基本流程:
需求分析
測試計劃
編寫測試用例
測試執行
輸出測試報告
文件修改命令:
Vi filename打開一個文件
查看ip地址命令:
Ifconfig
查看cpu、內存占用
Top
打開網頁到顯示的過程:
ABC類地址
A:1.0.0.0-126.255.255.255, 子網掩碼:255.0.0.0
B:128.0.0.0-191.255.255.255 子網掩碼:255.255.0.0
C:192.0.0.0-223.255.255.255 子網掩碼:255.255.255.0
析構函數的作用
析構函數(destructor) 與構造函數相反,當對象結束其生命周期,如對象所在的函數已調用完畢時,系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,delete會自動調用析構函數后釋放內存)。
查詢選修了3門以上課程的學生學號
Select sno from sc group by sno having count ( * ) > 3
預處理、編譯、匯編、鏈接
預處理:根據程序中#開頭的命令執行相關操作,并生成一個新的 .i文件
編譯:編譯器ccl將.i翻譯匯編程序存儲在.s中
匯編:將匯編程序翻譯成機器語言存儲為.o(二進制文件)
鏈接:生成可執行文件
MySQL數據增刪查改
增加: insert into 表名(字段名1,字段名2….)values (value1 , value2,….)
刪除: delete from 表名 where condition
查詢: select * from 表名
更新: update 表名 set 字段名1=value1, 字段名2=value2.
重載和重寫
重寫:子類對父類的方法進行重新辨析額,返回值和形參都不能改變。可以根據子類的需要,定義自己的行為。
重載:在一個類里面,方法名字相同,參數不同,返回類型可以相同也可以不同。每個重載方法有獨一無二的參數列表。
Linux查看當前目錄 新建空文件 新建目錄 netstat
查看當前目錄:pwd
新建空文件:touch
新建目錄:mkdir
Netstat:監控tcp/ip 網絡的工具。顯示路由表、網絡連接、網絡接口設備狀態
查看ip地址: ifconfig –a
多態
派生類對象的地址可以賦給基類的指針。通過基類指針調用函數時,編譯時并不能確定是調用的基類還是派生類的函數。如果基類指針指向的是基類對象就調用的是基類的函數,基類的指針指向派生類的對象時就調用的派生類的函數。
軟件測試流程
需求分析-------測試計劃------測試設計------搭建環境------測試執行------測試記錄------缺陷管理
等價類劃分有效等價類和無效等價類
1)有效等價類 是指對于程序的規格說明來說是合理的、有意義的輸入數據構成的集合。利用有效等價類可檢驗程序是否實現了規格說明所規定的功能和性能。
2)無效等價類 指對程序的規格說明是不合理的或無意義的輸入數據所構成的集合。
總結
以上是生活随笔為你收集整理的个人2020春招面经记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【2020HBU天梯赛训练】7-11 打
- 下一篇: 由于计算机的出现英语,电脑开机出现蓝屏怎