軟件開發(fā)中常見知識(shí)總結(jié)
最近在準(zhǔn)備軟件開發(fā)的筆試面試,復(fù)(yu)習(xí)(xi)了一些在軟件開發(fā)中的常見知識(shí)。為了給自己攢點(diǎn)RP,故與大家分享一二。
長春軟件開發(fā),軟件開發(fā)需要準(zhǔn)備的比較多,主要分為編程語言,數(shù)據(jù)結(jié)構(gòu)和算法,計(jì)算機(jī)網(wǎng)絡(luò),計(jì)算機(jī)操作系統(tǒng),數(shù)據(jù)庫,設(shè)計(jì)模式,軟件工程,軟件測試。作為一個(gè)軟件開發(fā)者(程序
猿)至少需要熟練一種語言,目前比較常見和普遍的有C/C++,,java ,python,C#(取2017年6月TIOBE編程語言排行榜前5),web端主要是javascript(js)和php,移動(dòng)端
主要是java(android)和Objective-c(IOS),python熱度持續(xù)上升,與最近機(jī)器學(xué)習(xí),應(yīng)該人工智能比較火有關(guān)吧。當(dāng)然,編程語言在精不在多,曾經(jīng)LZ也糾結(jié)過學(xué)哪種語
言比較好,哪種語言比較厲害,結(jié)果最后才發(fā)現(xiàn)一點(diǎn)用都沒有。每種語言都有自己的擅長之處,根據(jù)自己的情況選擇一門努力加深即可。
-------------------------------------------------------------------------------------------------------------------------------------
一.編程語言(以C++為例)
基礎(chǔ)部分:
//基本類型,復(fù)合類型,表達(dá)式,關(guān)鍵字,函數(shù),頭文件
基本類型:
bool, char, wchar_t, char16_t, char32_t
short , int ,long,long long ,float, double ,long double.
可能大家覺得簡單,沒什么問題。
1.上述基本類型在32/64位系統(tǒng)上求sizeof大小。
2.上述基本類型取值范圍,signed和unsigned溢出如何處理。
3.類型之間如何轉(zhuǎn)換,精度如何。
4.類型在計(jì)算機(jī)上的儲(chǔ)存方式。
復(fù)合類型:
引用& : 為對(duì)象起另外一個(gè)名字。 在C++11中增加了右值引用(rvalue reference)
指針* : 指向另一種類型的復(fù)合類型。 函數(shù)指針,指針函數(shù),數(shù)組指針,指針數(shù)組
指針和引用區(qū)別
struct union enum的使用
表達(dá)式:
常量表達(dá)式,值不會(huì)改變 const constexpr 修飾
關(guān)系,賦值,比較,移位操作符的優(yōu)先順序與結(jié)合順序
sizeof 與strlen的使用
sizeof()(基本類型,空結(jié)構(gòu)體,空類,虛函數(shù),static修飾的變量,字符串,指針,數(shù)組,作為參數(shù)的數(shù)組)
auto 和decltype C++11中增加
內(nèi)存對(duì)齊原則
關(guān)鍵字:
const和static
const int *p; int const *p ; int * const p; const修飾函數(shù),成員函數(shù),形參
static 局部變量,全局變量,函數(shù),成員函數(shù)等
violate和explcit
解釋作用
函數(shù):
內(nèi)聯(lián)函數(shù)與#define
遞歸理解
參數(shù)傳遞方式:值傳遞,引用傳遞,指針傳遞
頭文件:
#include<> ""
#define
#ifdef #ifndef #endif 作用
中級(jí)部分:
.內(nèi)存管理:運(yùn)行一個(gè)程序,所有變量和函數(shù)存放的內(nèi)存地址在哪?
堆和棧的區(qū)別
new delete malloc free
c++四種強(qiáng)制類型轉(zhuǎn)換:dynamic_cast ,static_cast, const_cast,reinterpret_cast
類,空類的大小,空類有哪些默認(rèn)類成員函數(shù)(構(gòu)造,析構(gòu),拷貝,賦值,取址)
類初始化列表順序
友元函數(shù)
構(gòu)造,析構(gòu)函數(shù)重載
構(gòu)造函數(shù)與析構(gòu)函數(shù)調(diào)用順序,構(gòu)造順序: 先調(diào)用基類構(gòu)造函數(shù),再調(diào)用成員類構(gòu)造函數(shù),最后調(diào)用 本身 的構(gòu)造函數(shù),析構(gòu)順序相反
構(gòu)造函數(shù)中可不可以拋出異常?析構(gòu)函數(shù)呢?
構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能是虛函數(shù)?能不能調(diào)用虛函數(shù)?
重載運(yùn)算符,哪些不能重載?
高級(jí)部分:
淺拷貝和深拷貝
虛函數(shù)實(shí)現(xiàn)機(jī)制
C++對(duì)象內(nèi)存模型分布
內(nèi)存泄漏如何檢測
對(duì)內(nèi)存池的理解
C++11新特性:auto/decltype 序列for循環(huán) Lambda表達(dá)式 變長參數(shù)的模板 智能指針shared_ptr,unique_ptr,weak_ptr
STL 序列式容器(a-v-d-l-fl),關(guān)聯(lián)式容器(set/map,multi),無序容器(unordered_set,map,multi)
特殊容器(stack,queue,pq,bitset)迭代器,算法 仿函數(shù)(函數(shù)對(duì)象) 迭代適配器(adaptor) 空間適配器(allocator)
Windows下的內(nèi)存管理
Windows消息機(jī)制的流程.
常見類庫的使用:STL,MFC,BOOST
參考書籍《C++ Primer Plus》《C++ Primer》《STL標(biāo)準(zhǔn)庫》《Effective C++》《深度探索c++對(duì)象模型》《STL源碼剖析》本本經(jīng)典
-------------------------------------------------------------------------------------------------------------------------------------------------
二.數(shù)據(jù)結(jié)構(gòu)和算法
鏈表(單向鏈表,雙向鏈表,循環(huán)鏈表),判斷鏈表是否有環(huán),鏈表反轉(zhuǎn),鏈表逆序輸出,兩個(gè)鏈表第一個(gè)公共結(jié)點(diǎn)
隊(duì)列和棧,兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧,兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列
字符串 常用字符串處理 字符串匹配 KMP算法
樹 二叉樹前序 ,中序, 后序, 層序 二叉樹鏡像 二叉樹 樹 森林之間的轉(zhuǎn)換 Huffman
圖 DFS BFS 最小生成樹 最短路徑 最大流 拓?fù)渑判?nbsp; 關(guān)鍵路徑
van Emde Boas樹 斐波那契堆,Treap樹堆,線段樹 伸展樹 跳躍表 劃分樹 不相交集合,哈希表,并查集,字典樹,后綴樹/數(shù)組
排序算法(交換類,插入類,選擇類,歸并,基數(shù))
查找算法(有序表,索引,搜索樹BST,平衡樹AVL,紅黑樹RBT,B樹B+B-B*)
分治法,動(dòng)態(tài)規(guī)劃,貪心算法,攤還分析(聚合分析,核算法,勢能法,動(dòng)態(tài)表)
參考書籍 《大話數(shù)據(jù)結(jié)構(gòu)》《算法導(dǎo)論》《運(yùn)籌學(xué)》《編程之美》《劍指offer》《編程珠璣》
刷題必備 leetcode , topcoder ,lintcode,牛客,各大校園OJ
-------------------------------------------------------------------------------------------------------------
三.計(jì)算機(jī)網(wǎng)絡(luò)
OSI7層模型(TCP4層)每層的作用和協(xié)議,URL到頁面過程
http/https,get/post以及冪等性,http協(xié)議頭,http網(wǎng)絡(luò)攻擊(CSRF、XSS)
TCP/UDP/IP報(bào)頭
ARP & RARP ICMP & IGMP
ping telnet traceroute
TCP最大連接數(shù)
tcp/udp 區(qū)別
tcp 如何保證可靠連接
三次握手和四次揮手詳細(xì)過程
擁塞控制(過//程、閾值)
流量控制與滑動(dòng)窗口
time_wait的危害
參考書籍《計(jì)算機(jī)網(wǎng)絡(luò)》《TCP/IP詳解》(卷一就夠了)《Unix環(huán)境編程》《Unix網(wǎng)絡(luò)編程》《linux高性能服務(wù)器編程》
-------------------------------------------------------------------------------------------------------------------------------------
四.計(jì)算機(jī)操作系統(tǒng)
操作系統(tǒng)幾種分類
進(jìn)程通信IPC(幾種方式)
進(jìn)程與線程區(qū)別
OS幾種策略(頁面置換,進(jìn)程調(diào)度)
互斥與死鎖相關(guān)
linux常用命令
linux內(nèi)核相關(guān)
參考書籍《Linux鳥哥私房菜》《現(xiàn)代操作系統(tǒng)》《深入理解計(jì)算機(jī)系統(tǒng)(CSAPP)》《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》
-----------------------------------------------------------------------------------------------------------------------------------
五.數(shù)據(jù)庫
//數(shù)據(jù)庫的范式,事務(wù)的ACID
//索引(包括分類及優(yōu)化方式,失效條件,底層結(jié)構(gòu))
//SQL語法(join,union,子查詢,having,group by)
//引擎對(duì)比(InnoDB,MyISAM)
//數(shù)據(jù)庫的鎖(行鎖,表鎖,頁級(jí)鎖,意向鎖,讀鎖,寫鎖,悲觀鎖,樂觀鎖,以及加鎖的select sql方式)
//隔離級(jí)別,依次解決的問題(臟讀、不可重復(fù)讀、幻讀)
//優(yōu)化(explain,慢查詢,show profile)
//分庫分表,主從復(fù)制,讀寫分離。
//Nosql相關(guān)(redis和memcached區(qū)別之類的,如redis,redis)
參考書籍《深入淺出MySQL》
------------------------------------------------------------------------------------------------------------------------------------
六.設(shè)計(jì)模式
框架是大智慧,用來對(duì)軟件設(shè)計(jì)進(jìn)行分工;設(shè)計(jì)模式是小技巧,對(duì)具體問題提出解決方案,以提高代碼復(fù)用率,降低耦合度。
設(shè)計(jì)模式,單例,工廠,策略,裝飾,橋接等23種Gof
框架模式:MVC,MTV,MVP,CBD,ORM
C++的QT、MFC、gtk,ACE,wxwindows,Java的SSH 、SSI,php的 smarty(MVC模式),python的django(MTV模式)等等
庫 STL,BOOST,COM,MFC
參考書籍《大話設(shè)計(jì)模式》
---------------------------------------------------------------------------------------------------------------------------------------------------
七.軟件工程
需求,概要,詳細(xì),編碼,測試,維護(hù)
版本控制工具 SVN,Git, VSS,CVS, ClearCase, StarTeam
自動(dòng)化工具: 代碼生成、依賴管理、版本管理、環(huán)境分配、打包部署、線上監(jiān)控等,Apollo
-------------------------------------------------------------------------------------------------------------------------------------------------------
八.軟件測試
單元測試,集成測試,系統(tǒng)測試,驗(yàn)收測試
黑盒測試(等價(jià)類劃分,邊界值分析,因果圖和判定表,正交實(shí)驗(yàn)法,狀態(tài)圖法)
白盒測試(邏輯驅(qū)動(dòng),基本路徑,循環(huán)覆蓋)
壓力測試、云測試、回歸測試、topsite測試
Bug管理工具JIRA,測試用例管理Testlink
自動(dòng)化測試
功能自動(dòng)化測試工具:Watir、Selenium、MaxQ、WebInject
性能自動(dòng)化測試工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator
下一篇:供應(yīng)鏈管理是三流集成