操做系統
解釋堆和棧的區別。php
分配在堆的內存與分配在堆棧的內存有什麼不一樣html
線程與進程的區別前端
多線程中棧與堆是公有的仍是私有的java
- 在多線程環境下,每一個線程擁有一個棧和一個程序計數器。棧和程序計數器用來保存線程的執行歷史和線程的執行狀態,是線程私有的資源。
- 其餘的資源(好比堆、地址空間、全局變量)是由同一個進程內的多個線程共享
mutexgit
- mutex - C++ Reference
- http://www.cplusplus.com/reference/mutex/mutex/?kw=mutex
condition variable程序員
- condition_variable - C++ Reference
- http://www.cplusplus.com/reference/condition_variable/condition_variable/
semophoregithub
deadlockweb
- 在引入鎖的同時,咱們遇到了一個新的問題:死鎖(Deadlock)。死鎖是指兩個或多個線程/進程之間相互阻塞,以致於任何一個都不能繼續運行,所以也不能解鎖其餘線程/進程。例如,線程A佔有lock A,而且嘗試獲取lock B;而線程2佔有lock B,嘗試獲取lock A。此時,二者相互阻塞,都沒法繼續運行。
- 總結產生死鎖的四個條件(只有當四個條件同時知足時纔會產生死鎖):
- Mutual Exclusion – Only one process may use a resource at a time
- Hold-and-Wait – Process holds resource while waiting for another
- No Preemption – Can’t take a resource away from a process
- Circular Wait – The waiting processes form a cycle
- 如何處理死鎖問題:
- 忽略該問題。例如鴕鳥算法,該算法能夠應用在極少發生死鎖的的狀況下。爲何叫鴕鳥算法呢,由於傳說中鴕鳥看到危險就把頭埋在地底下,可能鴕鳥以爲看不到危險也就沒危險了吧。跟掩耳盜鈴有點像。
- 檢測死鎖而且恢復。
- 仔細地對資源進行動態分配,以免死鎖。
- 經過破除死鎖四個必要條件之一,來防止死鎖產生。
記一次面試:進程之間究竟有哪些通訊方式?面試
4 個場景詳解大廠面試中的死鎖問題正則表達式
網絡
網絡協議_百度百科
- https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/328636?fr=aladdin
網絡協議常見面試題集錦
TCP/IP
是否瞭解應用層通訊,通訊協議HTTP
你必定要知道,關於https的五大誤區
UDP/IP
socket
- socket(計算機專業術語)_百度百科
- https://baike.baidu.com/item/socket/281150?fr=aladdin
TCP/IP、Http、Socket的區別_百度經驗
- http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html
面試環節:在瀏覽器輸入 URL 回車以後發生了什麼?
面試官問我:一個 TCP 鏈接能夠發多少個 HTTP 請求?
面試官問我:三次握手與四次揮手是怎麼完成的?
面試 | 你真的瞭解 HTTP 頭部麼?
Cookie、Session、Token那點事兒
一文完全搞懂cookie和session
數學
估算2^24
- 2^10 = 1024 ~ 10^3
- 2^24 ~ 2^4 * 10^3 * 10^3 ~ 16 * 10^6
移動1位數字使等式成立3013=10
估算悉尼有多少輛Taxi
軟件開發
C# v.s. C++
Scripting language v.s. Compiling language
動態/靜態連接庫區別
- 動態連接庫:在運行時加載
- 靜態連接庫:在編譯時直接聯到可執行文件中
- 動態連接庫和靜態連接庫的區別
- http://blog.csdn.net/gamecreating/article/details/5504152
- http://blog.sina.com.cn/s/blog_61ba4898010153zu.html
敏捷軟件開發 - 維基百科,自由的百科全書
Scrum
Test-driven development (TDD)
Behavior-driven development(BDD)
BDD是第二代的、由外及內的、基於拉(pull)的、多方利益相關者的(stakeholder)、多種可擴展的、高自動化的敏捷方法。它描述了一個交互循環,能夠具備帶有良好定義的輸出(即工做中交付的結果):已測試過的軟件。
-
- BDD的重點是經過與利益相關者的討論取得對預期的軟件行爲的清醒認識。它經過用天然語言書寫非程序員可讀的測試用例擴展了測試驅動開發方法。行爲驅動開發人員使用混合了領域中統一的語言的母語語言來描述他們的代碼的目的。這讓開發者得以把精力集中在代碼應該怎麼寫,而不是技術細節上,並且也最大程度的減小了將代碼編寫者的技術語言與商業客戶、用戶、利益相關者、項目管理者等的領域語言之間來回翻譯的代價。
Continuous integration(CI)
- Continuous integration - Wikipedia
- https://en.wikipedia.org/wiki/Continuous_integration
- 持續集成 - 維基百科,自由的百科全書
- 持續集成_百度百科
Continuous delivery / Continuous deployment(CD)
- Continuous delivery - Wikipedia
- 持續交付 - 維基百科,自由的百科全書
- 持續交付_百度百科
DevOps(Development和Operations的組合詞)
系統發展生命週期(SDLC)
軟件即服務(Software as a Service,i.e. SaaS)
奇異遞歸模板模式(curiously recurring template pattern,CRTP)
MEAN Stack
- MongoDB, Angularjs, Nodejs, React, Golang
LAMP Stack
- Linux, Apache, MySQL, PHP/Python, Javascript, Angularjs
Full Stack Java
- Java, J2EE, Spring MVC Framework, Bootstrap, Javascript, Angularjs
測試
如何測試一個水杯,記得考慮異常測試
經常使用的測試工具,測試方法
程序crash如何定位檢測
內存泄露定位 / 監測/防止
- 內存泄漏_百度百科
- https://baike.baidu.com/item/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F/6181425?fr=aladdin
- 內存泄漏以及常見的解決方法 - na_he的專欄 - CSDN博客
- http://blog.csdn.net/na_he/article/details/7429171
- C/C++內存泄漏及檢測 - 吳秦 - 博客園
- http://www.cnblogs.com/skynet/archive/2011/02/20/1959162.html
- Memory debugger - Wikipedia
- https://en.wikipedia.org/wiki/Memory_debugger
- A memory debugger also known as a runtime debugger[1] is a debugger for finding software memory problems such as memory leaks and buffer overflows. These are due to bugs related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection, such as managed code, might also need memory debuggers, e.g. for memory leaks due to "living" references in collections.
- Valgrind - Wikipedia
- https://en.wikipedia.org/wiki/Valgrind#Memcheck
- Valgrind
- Valgrind was originally designed to be a freememory debugging tool for Linux on x86, but has since evolved to become a generic framework for creating dynamic analysis tools such as checkers and profilers.
GDB
- gdb_百度百科
- http://baike.baidu.com/link?url=qzDVNAB5igtON9p7hw4Ybwu5hELcvElenqb9X-hINKukyB-6lG0Al-VJ2Vxjm7PwFBJmiZVwZCYJ2V-alB_WLa
工具
Confluence
- Confluence (software) - Wikipedia
Cucumber
- Cucumber (software) - Wikipedia
- https://en.wikipedia.org/wiki/Cucumber_(software)
- Cucumber is a software tool used by computer programmers for testing other software. It runs automated acceptance tests written in a behavior-driven development (BDD) style. Central to the Cucumber BDD approach is its plain language parser called Gherkin. It allows expected software behaviors to be specified in a logical language that customers can understand. As such, Cucumber allows the execution of feature documentation written in business-facing text. Capybara, which is a part of the Cucumber testing framework, is an example of a web based test automation software.
- Cucumber is written in the Ruby programming language. and was originally used exclusively for Ruby testing as a complement to the RSpec BDD framework. Cucumber now supports a variety of different programming languages through various implementations. For example, Cuke4php and Cuke4Lua are software bridges that enable testing of PHP and Lua projects, respectively. Other implementations may simply leverage the Gherkin parser while implementing the rest of the testing framework in the target language.
- Introduction to Cucumber
- 從頭寫一個Cucumber測試(一) Selenium Test – Bu・log
- 從頭寫一個Cucumber測試(二) Cucumber Test – Bu・log
git
JIRA
JMeter
- Apache JMeter - Wikipedia
- https://en.wikipedia.org/wiki/Apache_JMeter
- Apache JMeter is an Apacheproject that can be used as a load testing tool for analyzing and measuring the performance of a variety of services, with a focus on web applications.
- JMeter can be used as a unit-test tool for JDBC database connections,[1] FTP,[2] LDAP,[3] Webservices,[4] JMS,[5] HTTP,[6] generic TCP connections and OS native processes.[citation needed] One can also configure JMeter as a monitor,[7] although this is typically considered[by whom?]ad hoc rather than advanced monitoring. It can be used for some functional testing as well.[8]
- JMeter supports variable parameterization, assertions (response validation), per-thread cookies, configuration variables and a variety of reports.
- JMeter architecture is based on plugins. Most of its "out of the box" features are implemented with plugins. Off-site developers can easily extend JMeter with custom plugins.
- Jmeter_百度百科
- https://baike.baidu.com/item/Jmeter
- Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來自不一樣壓力類別下測試它們的強度和分析總體性能。另外,JMeter可以對應用程序作功能/迴歸測試,經過建立帶有斷言的腳原本驗證你的程序返回了你指望的結果。爲了最大限度的靈活性,JMeter容許使用正則表達式建立斷言。
- Apache jmeter 能夠用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它能夠用於對服務器、網絡或對象模擬繁重的負載來測試它們的強度或分析不一樣壓力類型下的總體性能。你可使用它作性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。
LoadUI
OpenGL
Selenium
- Selenium (software) - Wikipedia
- https://en.wikipedia.org/wiki/Selenium_(software)
- Selenium is a portable software-testingframework for web applications. Selenium provides a playback (formerly also recording) tool for authoring tests without the need to learn a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala. The tests can then run against most modern web browsers. Selenium deploys on Windows, Linux, and macOS platforms. It is open-source software, released under the Apache 2.0 license: web developers can download and use it without charge.
SoapUI
- SoapUI - Wikipedia
- https://en.wikipedia.org/wiki/SoapUI
- SoapUI is an open-source web service testing application for service-oriented architectures (SOA) and representational state transfers (REST). Its functionality covers web service inspection, invoking, development, simulation and mocking, functional testing, load and compliance testing. A commercial version, SoapUI Pro, which mainly focuses on features designed to enhance productivity, was also developed by Eviware software. In 2011, SmartBear Software acquired Eviware.
- SoapUI was initially released to SourceForge in September 2005. It is free software, licensed under the terms of the European Union Public License. Since the initial release, SoapUI has been downloaded more than 2,000,000 times. It is built entirely on the Java platform, and uses Swing for the user interface. This means that SoapUI is cross-platform. Today, SoapUI also supports IDEA, Eclipse, and NetBeans.
- SoapUI can test SOAP and REST web services, JMS, AMF, as well as make any HTTP(S) and JDBC calls.
Swing
- Swing (Java) - 維基百科,自由的百科全書
程序員必備的工具軟件有哪些?
系統設計
我的吐血整理的系統設計資料大全 - 九章算法
- https://mp.weixin.qq.com/s/4kv57_rBVWemkh5t33WGMw
設計模式
- 設計模式(即便代碼編制真正工程化)_百度百科
- http://baike.baidu.com/link?url=QoxZgqaX0LcWjUC9bYsOC8jLwWf3HpljeCuDoqxL4MYIWnWqzdtWlIhyVhe6npPk8zL-pcoQP5oq4HImZKspt9Da3R7d3cEkrsVgwqVmAKu
單體如何避免多個instance?
如何設計爬蟲系統 | 系統設計高頻題解題思路分析
系統設計資料大全
面試官絕殺:系統是如何支撐高併發的?
每秒千萬級實時數據處理系統是如何設計的?
面試官:說說 Spring Cloud 的底層架構原理吧