📚 C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。
Go to file
2018-02-13 19:31:31 +08:00
.vscode 66. Plus One 、 88. Merge Sorted Array 2018-02-11 22:17:45 +08:00
Algorithm 添加文件排序、查找的exe 2018-02-11 01:10:40 +08:00
Problems 66. Plus One 、 88. Merge Sorted Array 2018-02-11 22:17:45 +08:00
README.md 添加运行库 2018-02-13 19:31:31 +08:00

目录


C/C++

  • 封装
  • 继承
  • 多态
  • 虚函数
  • 内存分配和管理
  • extern"C"
  • const作用
  • 什么是面向对象OOP
  • new、malloc、alloca的区别
  • 运行时类型识别RTTI
  • 友元类和友元函数
  • struct和class的区别

STL

数据结构

算法

排序

查找

Problems

Single Problem

Leetcode Problems

Array

操作系统

  • 进程间的通信方式(管道、有名管道、信号、共享内存、消息队列、信号量、套接字、文件)

计算机网络

  • TCP/IP
  • TCP协议
  • TCP三次握手
  • TCP和UDP的区别
  • socket套接字
  • HTTP返回码

HTTP

runoob . HTTP教程

HTTP 请求方法

  • GET请求指定的页面信息并返回实体主体
  • HEAD类似于get请求只不过返回的响应中没有具体的内容用于获取报头
  • POST向指定资源提交数据进行处理请求例如提交表单或者上传文件。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • PUT从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE请求服务器删除指定的页面
  • CONNECTHTTP/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: 充当网关或代理的服务器,未及时从远端服务器获取请求

数据库

设计模式

网络编程

链接装载库

运行库Runtime Library

典型程序运行步骤

  1. 操作系统创建进程,把控制权交给程序的入口(往往是运行库中的某个入口函数)
  2. 入口函数对运行库和程序运行环境进行初始化包括堆、I/O、线程、全局变量构造等等
  3. 入口函数初始化后调用main函数正式开始执行程序主体部分。
  4. main函数执行完毕后返回到入口函数进行清理工作包括全局变量析构、堆销毁、关闭I/O等然后进行系统调用结束进程。

一个程序的I/O指代程序与外界的交互包括文件、管程、网络、命令行、信号等。更广义地讲I/O指代操作系统理解为“文件”的事物。

glibc 入口

_start -> __libc_start_main -> exit -> _exit

其中main(argc, argv, __environ)函数在__libc_start_main里执行。

MSVC CRT 入口

int mainCRTStartup(void)

执行如下操作:

  1. 初始化和OS版本有关的全局变量。
  2. 初始化堆。
  3. 初始化I/O。
  4. 获取命令行参数和环境变量。
  5. 初始化C库的一些数据。
  6. 调用main并记录返回值。
  7. 检查错误并将main的返回值返回。

C语言运行库CRT

一个C语言运行库大致包含如下功能

  • 启动与退出:包括入口函数及入口函数所依赖的其他函数等。
  • 标准函数有C语言标准规定的C语言标准库所拥有的函数实现。
  • I/OI/O功能的封装和实现。
  • 堆:堆的封装和实现。
  • 语言实现:语言中一些特殊功能的实现。
  • 调试:实现调试功能的代码。

C语言标准库ANSI C

包含:

  • 标准输入输出stdio.h
  • 文件操作stdio.h
  • 字符操作ctype.h
  • 字符串操作string.h
  • 数学函数math.h
  • 资源管理stdlib.h
  • 格式转换stdlib.h
  • 时间/日期time.h
  • 断言assert.h
  • 各种类型上的常数limits.h & float.h
  • 变长参数stdarg.h
  • 非局部跳转setjmp.h

海量数据处理

其他

书籍

  • 《剑指Offer》
  • 《编程珠玑》
  • 《深度探索C++对象模型》
  • 《Effective C++》
  • 《More Effective C++》
  • 《深入理解C++11》
  • 《STL源码剖析》
  • 《深入理解计算机系统》
  • 《TCP/IP网络编程》
  • 《程序员的自我修养》

复习刷题网站

面试题目经验