操做系统
解释堆和栈的区别。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 的底层架构原理吧