mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
First Update
This commit is contained in:
commit
6b742a5393
9
.vscode/settings.json
vendored
Normal file
9
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"xstring": "cpp",
|
||||||
|
"xtree": "cpp",
|
||||||
|
"xutility": "cpp"
|
||||||
|
}
|
||||||
|
}
|
14
Algorithm/BubbleSort.h
Normal file
14
Algorithm/BubbleSort.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// 冒泡排序
|
||||||
|
|
||||||
|
void BubbleSort(vector<int>& v) {
|
||||||
|
int temp;
|
||||||
|
for (int i = 0; i < v.size() - 1; ++i) {
|
||||||
|
for (int j = 0; j < v.size() - 1 - i; ++j) {
|
||||||
|
if (v[j] > v[j + 1]) { // 从小到大
|
||||||
|
temp = v[j];
|
||||||
|
v[j] = v[j + 1];
|
||||||
|
v[j + 1] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
Algorithm/BubbleSort_orderly.h
Normal file
18
Algorithm/BubbleSort_orderly.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
// 冒泡排序(跳过有序的改进版)
|
||||||
|
|
||||||
|
void BubbleSort_orderly(vector<int>& v) {
|
||||||
|
int temp;
|
||||||
|
bool orderly = false;
|
||||||
|
for (int i = 0; i < v.size() - 1 && !orderly; ++i) {
|
||||||
|
orderly = true;
|
||||||
|
for (int j = 0; j < v.size() - 1 - i; ++j) {
|
||||||
|
if (v[j] > v[j + 1])
|
||||||
|
{
|
||||||
|
orderly = false;
|
||||||
|
temp = v[j];
|
||||||
|
v[j] = v[j + 1];
|
||||||
|
v[j + 1] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
Problems/LeetcodeProblems/best-time-to-buy-and-sell-stock.h
Normal file
14
Problems/LeetcodeProblems/best-time-to-buy-and-sell-stock.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int maxProfit(vector<int>& prices) {
|
||||||
|
int left = 0, right = 0;
|
||||||
|
int max = 0, temp = 0;
|
||||||
|
for(auto i = 0; i < prices.size(); ++i) {
|
||||||
|
right = i;
|
||||||
|
temp = prices[right] - prices[left];
|
||||||
|
if(temp < 0) left = i;
|
||||||
|
if(max < temp) max = temp;
|
||||||
|
}
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
};
|
22
Problems/LeetcodeProblems/container-with-most-water.h
Normal file
22
Problems/LeetcodeProblems/container-with-most-water.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int maxArea(vector<int>& height) {
|
||||||
|
int left = 0, right = height.size()-1;
|
||||||
|
int max = 0, temp = 0;
|
||||||
|
while(left < right) {
|
||||||
|
temp = (right - left) * (height[left] < height[right] ? height[left] : height[right]);
|
||||||
|
if(max < temp) max = temp;
|
||||||
|
if(height[left] < height[right]) {
|
||||||
|
do{
|
||||||
|
left++;
|
||||||
|
} while(left < right && height[left-1] >= height[left]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
do{
|
||||||
|
right--;
|
||||||
|
} while(left < right && height[right] <= height[right+1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
};
|
26
Problems/LeetcodeProblems/majority-element.h
Normal file
26
Problems/LeetcodeProblems/majority-element.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include <map>
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int majorityElement(vector<int>& nums) {
|
||||||
|
int n = nums.size();
|
||||||
|
map<int, int> m_times;
|
||||||
|
int moreThanTimes = n / 2;
|
||||||
|
for (auto i = 0; i < n; ++i) {
|
||||||
|
auto it = m_times.find(nums[i]);
|
||||||
|
if (it == m_times.end()) {
|
||||||
|
// No existence in map, insert
|
||||||
|
m_times.insert(std::pair<int, int>(nums[i], 1));
|
||||||
|
it = m_times.find(nums[i]);
|
||||||
|
}
|
||||||
|
// Is it more than ⌊ n/2 ⌋ times ?
|
||||||
|
if ((*it).second > moreThanTimes) {
|
||||||
|
return (*it).first;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
(*it).second++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Can't find
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
};
|
13
Problems/LeetcodeProblems/maximum-subarray.h
Normal file
13
Problems/LeetcodeProblems/maximum-subarray.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#define MIN_INT -2147483648
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int maxSubArray(vector<int>& nums) {
|
||||||
|
int max = MIN_INT, temp = 0;
|
||||||
|
for(auto i = 0; i < nums.size(); ++i) {
|
||||||
|
temp += nums[i];
|
||||||
|
if(temp > max) max = temp;
|
||||||
|
if(temp < 0) temp = 0;
|
||||||
|
}
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
};
|
12
Problems/LeetcodeProblems/move-zeroes.h
Normal file
12
Problems/LeetcodeProblems/move-zeroes.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
void moveZeroes(vector<int>& nums) {
|
||||||
|
int left = 0, right = 0;
|
||||||
|
for(; left < nums.size() && nums[left] != 0; left++);
|
||||||
|
for(right = left; right < nums.size(); right++) {
|
||||||
|
if(nums[right] == 0) continue;
|
||||||
|
nums[left++] = nums[right];
|
||||||
|
}
|
||||||
|
while(left < nums.size()) nums[left++] = 0;
|
||||||
|
}
|
||||||
|
};
|
18
Problems/LeetcodeProblems/two-sum.h
Normal file
18
Problems/LeetcodeProblems/two-sum.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
vector<int> twoSum(vector<int>& nums, int target) {
|
||||||
|
vector<int> sum;
|
||||||
|
for(auto i = 0; i < nums.size(); i++)
|
||||||
|
{
|
||||||
|
for(auto j = i+1; j < nums.size(); j++)
|
||||||
|
{
|
||||||
|
if(i == j) continue;
|
||||||
|
if(nums[i] + nums[j] != target) continue;
|
||||||
|
sum.push_back(i);
|
||||||
|
sum.push_back(j);
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
};
|
152
README.md
Normal file
152
README.md
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
* [C/C++](#)
|
||||||
|
* [STL](#)
|
||||||
|
* [数据结构](#)
|
||||||
|
* [算法](#)
|
||||||
|
* [Problems](#)
|
||||||
|
* [操作系统](#)
|
||||||
|
* [计算机网络](#)
|
||||||
|
* [数据库](#)
|
||||||
|
* [设计模式](#)
|
||||||
|
* [网络编程](#)
|
||||||
|
* [海量数据处理](#)
|
||||||
|
* [其他](#)
|
||||||
|
* [书籍](#)
|
||||||
|
* [复习刷题网站](##)
|
||||||
|
* [面试题目经验](##)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## C/C++
|
||||||
|
|
||||||
|
* 封装
|
||||||
|
* 继承
|
||||||
|
* 多态
|
||||||
|
* 虚函数
|
||||||
|
* 内存分配和管理
|
||||||
|
* extern"C"
|
||||||
|
* const作用
|
||||||
|
* 什么是面向对象(OOP)
|
||||||
|
* new和malloc的区别
|
||||||
|
* 运行时类型识别(RTTI)
|
||||||
|
* 友元类和友元函数
|
||||||
|
* struct和class的区别
|
||||||
|
|
||||||
|
## STL
|
||||||
|
|
||||||
|
## 数据结构
|
||||||
|
|
||||||
|
## 算法
|
||||||
|
|
||||||
|
### 排序
|
||||||
|
|
||||||
|
* [冒泡排序](Algorithm/BubbleSort.h)
|
||||||
|
* [冒泡排序(跳过有序的改进版)](Algorithm/BubbleSort_orderly.h)
|
||||||
|
|
||||||
|
## Problems
|
||||||
|
|
||||||
|
### Leetcode Problems
|
||||||
|
|
||||||
|
#### Array
|
||||||
|
|
||||||
|
* [1. Two Sum](Problems/LeetcodeProblems/two-sum.h)
|
||||||
|
* [4. Median of Two Sorted Arrays](Problems/LeetcodeProblems/median-of-two-sorted-arrays.h)
|
||||||
|
* [11. Container With Most Water](Problems/LeetcodeProblems/container-with-most-water.h)
|
||||||
|
* [53. Maximum Subarray](Problems/LeetcodeProblems/maximum-subarray.h)
|
||||||
|
* [121. Best Time to Buy and Sell Stock](Problems/LeetcodeProblems/best-time-to-buy-and-sell-stock.h)
|
||||||
|
* [169. Majority Element](Problems/LeetcodeProblems/majority-element.h)
|
||||||
|
* [283. Move Zeroes](Problems/LeetcodeProblems/move-zeroes.h)
|
||||||
|
|
||||||
|
|
||||||
|
## 操作系统
|
||||||
|
|
||||||
|
* 进程间的通信方式(管道、有名管道、信号、共享内存、消息队列、信号量、套接字、文件)
|
||||||
|
|
||||||
|
## 计算机网络
|
||||||
|
|
||||||
|
* TCP/IP
|
||||||
|
* TCP协议
|
||||||
|
* TCP三次握手
|
||||||
|
* TCP和UDP的区别
|
||||||
|
* socket套接字
|
||||||
|
* HTTP返回码
|
||||||
|
|
||||||
|
### HTTP
|
||||||
|
|
||||||
|
[runoob . HTTP教程](http://www.runoob.com/http/http-tutorial.html)
|
||||||
|
|
||||||
|
#### HTTP 请求方法
|
||||||
|
* GET:请求指定的页面信息,并返回实体主体
|
||||||
|
* HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
|
||||||
|
* POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
|
||||||
|
* PUT:从客户端向服务器传送的数据取代指定的文档的内容。
|
||||||
|
* DELETE:请求服务器删除指定的页面
|
||||||
|
* CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
|
||||||
|
* OPTIONS:允许客户端查看服务器的性能
|
||||||
|
* TRACE:回显服务器收到的请求,主要用于测试或诊断
|
||||||
|
|
||||||
|
#### HTTP 状态码
|
||||||
|
* 200 OK: 请求成功
|
||||||
|
* 301 Moved Permanently: 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
|
||||||
|
* 400 Bad Request: 客户端请求的语法错误,服务器无法理解
|
||||||
|
* 401 Unauthorized: 请求要求用户的身份认证
|
||||||
|
* 403 Forbidden: 服务器理解请求客户端的请求,但是拒绝执行此请求
|
||||||
|
* 404 Not Found: 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
|
||||||
|
* 408 Request Timeout: 服务器等待客户端发送的请求时间过长,超时
|
||||||
|
* 500 Internal Server Error: 服务器内部错误,无法完成请求
|
||||||
|
* 503 Service Unavailable: 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
|
||||||
|
* 504 Gateway Timeout: 充当网关或代理的服务器,未及时从远端服务器获取请求
|
||||||
|
|
||||||
|
## 数据库
|
||||||
|
|
||||||
|
* 数据库事务四大特性:原子性、一致性、分离性、持久性
|
||||||
|
* 数据库索引:顺序索引 B+树索引 hash索引
|
||||||
|
[MySQL索引背后的数据结构及算法原理](http://blog.codinglabs.org/articles/theory-of-mysql-index.html)
|
||||||
|
|
||||||
|
## 设计模式
|
||||||
|
|
||||||
|
## 网络编程
|
||||||
|
|
||||||
|
## 海量数据处理
|
||||||
|
|
||||||
|
* [ 海量数据处理面试题集锦](http://blog.csdn.net/v_july_v/article/details/6685962)
|
||||||
|
* [十道海量数据处理面试题与十个方法大总结](http://blog.csdn.net/v_JULY_v/article/details/6279498)
|
||||||
|
|
||||||
|
## 其他
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## 书籍
|
||||||
|
|
||||||
|
* 《剑指Offer》
|
||||||
|
* 《编程珠玑》
|
||||||
|
* 《深度探索C++对象模型》
|
||||||
|
* 《Effective C++》
|
||||||
|
* 《More Effective C++》
|
||||||
|
* 《深入理解C++11》
|
||||||
|
* 《STL源码剖析》
|
||||||
|
* 《深入理解计算机系统》
|
||||||
|
* 《TCP/IP网络编程》
|
||||||
|
* 《程序员的自我修养》
|
||||||
|
|
||||||
|
## 复习刷题网站
|
||||||
|
|
||||||
|
* [leetcode](https://leetcode.com/)
|
||||||
|
* [牛客网](https://www.nowcoder.net/)
|
||||||
|
* [慕课网](https://www.imooc.com/)
|
||||||
|
* [菜鸟教程](http://www.runoob.com/)
|
||||||
|
|
||||||
|
## 面试题目经验
|
||||||
|
|
||||||
|
* [知乎 . 互联网公司最常见的面试算法题有哪些?](https://www.zhihu.com/question/24964987)
|
||||||
|
* [知乎 . 面试 C++ 程序员,什么样的问题是好问题?](https://www.zhihu.com/question/20184857)
|
||||||
|
* [cnblogs . C++面试集锦( 面试被问到的问题 )](https://www.cnblogs.com/Y1Focus/p/6707121.html)
|
||||||
|
* [cnblogs . C/C++ 笔试、面试题目大汇总](https://www.cnblogs.com/fangyukuan/archive/2010/09/18/1829871.html)
|
||||||
|
* [cnblogs . 常见C++面试题及基本知识点总结(一)](https://www.cnblogs.com/LUO77/p/5771237.html)
|
||||||
|
* [CSDN . 全面整理的C++面试题](http://blog.csdn.net/ljzcome/article/details/574158)
|
||||||
|
* [CSDN . 百度研发类面试题(C++方向)](http://blog.csdn.net/Xiongchao99/article/details/74524807?locationNum=6&fps=1)
|
||||||
|
* [CSDN . c++常见面试题30道](http://blog.csdn.net/fakine/article/details/51321544)
|
||||||
|
* [CSDN . 腾讯2016实习生面试经验(已经拿到offer)](http://blog.csdn.net/onever_say_love/article/details/51223886)
|
||||||
|
* [segmentfault . C++常见面试问题总结](https://segmentfault.com/a/1190000003745529)
|
Loading…
Reference in New Issue
Block a user