简历问题总结
Summary
一、c++基础C++程序执行的内存空间结构
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量**(数据段+BSS区)**
数据段(data):用来存放显式初始化的全局变量或者静态(全局)变量,常量数据。
BSS段(Block Started by Symbol): 存储未初始化的全局变量或者静态(全局)变量。编译器给处理成0;
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收;堆由于new/delete分配空间不连续,会产生碎片
栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等;堆由于new/delete分配空间不连续,会产生碎片
在main执行之前和之后执行的代码可能是什么main函数执行之前:
主要就是初始化系统相关资源:设置栈指针,进行所有全局对象的构造以及初始化工作, 将main函数的参数argc,argv等传递给main函数,然后才真正运行main函数
C++中,argc和argv是命令行参数的传递机制,用于向程序传递参数。
argc是指传递给程序 ...
无题
Math向量向量点乘:(内积)点乘(Dot Product)的结果是点积,又称数量积或标量积(Scalar Product)。
向量叉乘:(外积)叉乘(Cross Product)又称向量积(Vector Product)。
三角形面积平行四边形的一半
判断点与三角形的关系Barycentric Coordinates(重心坐标法):Barycentric Coordinates 是一种基于三角形内点在三个顶点上的权重的表示方法。对于三角形ABC,点P在三角形内当且仅当点P的三个重心坐标(alpha, beta, gamma)都在[0, 1]范围内。
12345678910111213141516171819202122232425262728293031323334353637#include <iostream>using namespace std;struct Point { double x, y;};#include <cmath>bool isAlmostEqual(double a, double b ...
无题
手撕记录快排;稳定版本快排;三路快排;
堆排序;
最长递增子序列;
最长无重复子串;
智能指针shared_ptr;
字节国际化社区测开面经1.介绍一下TCP/IP协议
2.MAC地址和IP地址有什么区别
3.介绍一下什么是局域网
4.讲一下DNS
5.DNS协议具体是怎么找到服务器地址的
6.介绍一下什么是Socket
7.详细介绍一下socket是怎么建立连接的
8.一个端口可以建立多个连接吗
9.对webserver项目进行深入的介绍
10.webserver项目中HTTP请求处理的细节
11.服务器实现的路由机制
12.介绍一下利用Epoll实现Reactor事件模式,什么是IO多路复用
13.Epoll的实现效果,提升了多少?
14.介绍一下什么是双向链表,Epoll为什么要用双向链表?
15.Epoll中双向链表与红黑树机构的应用方式?双向链表怎么发挥的作用?
16.介绍一下什么是红黑树?
17.进程、线程和协程有什么区别?
18.C++内存泄漏的场景?怎么避免内存泄漏?
19.介绍一下什么是B+树?B+树一般怎么去用?
20.介绍一下git分支管理?什么情况下会 ...
无题
Git分支管理git所有分支之间彼此互不干扰,各自完成各自的工作和内容。可以在分支使用完后合并到总分支(原分支) 上,安全、便捷、不影响其他分支工作;
main分支(以前为master分支)从项目创建之初,有且唯一的分支就是主分支。如果之后再创建分支,就是一个一个的从分支,主分支被叫做main
HEAD在 Git 中,它是一个指针,指向当前所在的本地分支;
git创建新分支。即在当前位置创建一个指针,比如起名为 从分支dev,然后将HEAD指向dev。
分支创建好后的提交都是在dev分支上提交,之前的总提交master分支的提交位置停留在创建从分支dev的位置。而HEAD会跟随新创建的分支,跟随每一次提交不停的先前移动。保持HEAD指针的在提交的最前沿。在master上新创建的dev分支会继承master分支的所有提交,通过 git log 可以看出来;
提交分支当dev分支工作完成,需要合并到master分支的时候,也只是将master指针指向当前dev的位置,并将HEAD指向master,这时dev分支可以直接删除,也可以不删除,删除的话也只是移除了dev指针,只留下一个mast ...
无题
总纲:1.自我介绍
2.应答与反提问
3.面试引导
介绍一下TCP/IP协议TCP/IP协议是互联网通信的基础,它是一个由许多协议组成的协议族,用于在网络上传输数据。TCP/IP协议分为四层:应用层、传输层、网络层和数据链路层。
应用层是用户应用程序与TCP/IP协议的接口层,它提供各种服务,如HTTP、FTP、SMTP等。传输层负责在两台计算机之间建立连接,并保证数据的传输。TCP协议和UDP协议是传输层的两个主要协议,TCP协议提供可靠的传输,UDP协议提供不可靠的传输。网络层负责在网络中路由数据包,IP协议是网络层的主要协议,它为数据包分配IP地址,并负责在网络中传输数据包。数据链路层负责在物理链路上传输数据帧,ARP协议和MAC协议是数据链路层的主要协议,MAC协议它为数据帧分配MAC地址,并负责在物理链路上传输数据帧。
TCP/IP协议是一个复杂的协议,它为互联网的通信提供了可靠的基础。
ARP协议
地址解析协议(ARP)是将IP地址解析为MAC地址的协议。IP地址是网络层的地址,MAC地址是数据链路层的地址。当一台计算机要向另一台计算 ...
zlib改版回归
概况去年环球最大的数字图书馆”Z-Library已经完全被封禁(包括镜像网站在内的所有DNS服务器全部封禁),创始人也被抓捕了,据其网站被封前的最后一次内容更新,这个有名的盗版电子书网站已经收录了10456034本数字图书、84837646篇文章,几近笼盖了各个领域、学科的内容。
Zlib改版回归——个人私域网址特点私有域名无需科学上网
准备工作
科学上网
邮箱
注册地址https://singlelogin.me
步骤
访问注册地址,注册
2. 登录后,点击继续即可获取自己专属的个人三级域名。
可以保存自己的专属链接下次访问。密码就是注册账号的登录密码
IDM加速下载效果
之前的使用方式登录国内的某些新的镜像网站:(不需要科学上网)
https://zlib.quest
https://zlib.ink
https://zlib.wiki/
https://ylibrary.org/
但是使用起来还是不太方便,搜索效果没有原站好,很多书籍搜索不到
洋葱浏览器+科学上网地址
zh.loginzlib2vrak5zzpcocc3ouizykn6k5qecgj ...
strlen()函数实现
c++ strlen()函数,实现源码
下面是C++中的strlen()函数的源码:
12345678910111213141516Copy code#include <iostream>using namespace std;int strlen(char* str) { int len = 0; while (*str != '\0') { len++; str++; } return len;}int main() { char str[] = "Hello, World!"; int length = strlen(str); cout << "Length of string: " << length << endl; return 0;}
这个函数使用指针迭代的方法来计算给定字符串的长度。该函数使用while循环来遍历字符串,直到遇到空字符’\0’,然后返 ...
智能指针的使用以及实现
shared_ptr;
unique_ptr;
weak_ptr;
1. shared_ptr1.1 shared_ptr 类模板实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141#include <iostream>#include <mutex>#include <thread>using namespace std;template <class T& ...