自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (1)
  • 收藏
  • 关注

原创 百度C++实习一二三面 面经

百度效率确实高,三面连着面,一点开始的,快三点的时候结束了。一面:面试官人很好,面过人最好的一个面试官了项目介绍OSI七层及TCP/IP五层各层协议TCP与UDP区别撕:写个二叉树遍历撕:求数组第二大的数浏览器输入baidu全过程其他啥的也忘了。。反正问得很简单然后马上二面了二面:二面老哥挺严肃的项目介绍内存对齐C++内存管理机制(malloc底层和Alloc两次空间配置器)new和malloc底层区别map底层实现和unordered_map底层实现撕:不用vect.

2021-04-18 16:56:19 270

原创 Linux网络通信(二)

常用网络套接字socket函数创建Socketsocket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write在网络上收发数据,如果socket()调用出错则返回-1。对于IPv4,domain参数指定为AF_INET。对于TCP协议,type参数指定为SOCK_STREAM,表示面向流的传输协议。如果是UDP协议,则type参数指定为SOCK_DGRAM,表示面向数据报的传输协议。protocol参数的介绍从略,指定为0即.

2021-04-13 23:04:38 143

原创 Linux网络编程基础(1)

网络编程预备知识主机字节序与网络字节序现代CPU的累加器一次都能至少装载4字节(32位机),即一个整数。这四个字节在内存中的排序影响着它被累加器装载成的整数的值。这就是字节序问题。字节序分为大端字节序和小端字节序。大端字节序表示一个整数的高位地址存储在内存的低地址位上,地位地址存储再内存的高地址处。网络数据流地址:发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发.

2021-04-13 19:27:30 110

原创 4.8腾讯一面IEG魔方面经

人生第一次面试,确实慌得一笔。感谢腾讯给的机会。项目一分钟没问其实没想到。本人大三双非计课专业投的是游戏客户端研发实习岗位C++:1、如何理解C++面向对象编程2、封装3、继承4、多态的实现,运行时多态、编译时多态5、虚函数底层机制6、this指针,问的很细保存在哪里,struct中有this指针吗(this确实没深入了解过)7、struct和class最本质的区别(回答的都不是本质)8、函数运行全过程的底层机制(从入栈开始讲),问到汇编层面(汇编层面确实不清楚)9、typede.

2021-04-08 23:27:47 500

原创 C++内存管理(二)

接着上一讲继续,这一讲讲的是C++标准库中的分配器,也就是std::allocator中得到内存管理,区别与上一讲C++Primer中1.1和1.2的管理版本,allocator在层次面上更高,主要体现在空间和时间上的内存管理效率得到了巨大的的改进。第二讲std::allocator这张图显示的是malloc得到的内存块结构(VC6版本),假设我们需要申请12个字节的内存大小,这时候系统实际分配给我们的内存块大小大于12字节(block size),如上图所示,还包含上下两个cookie共8个字节.

2021-03-20 23:06:43 232

原创 C++内存管理(一)

前天对内存底层机制十分感兴趣,又碰巧在B站刷到侯捷老师的C++内存管理机制,陆陆续续花了三天,终于啃完了。正如视频标题所称——从平地到万丈高楼,着实让我收获颇丰。写了以下的观看笔记,分享一些老我的理解和心得。第一讲Primitives这幅图说明了C++应用程序分配内存的四个途径,每个途径都可以实现内存的申请调用而且具有层次关系。比如在我们利用C++标准库STL容器创建对象的时候,容器向allocator提出内存申请,再由allocator向下一级去申请内存等等。这个过程经过封装的,在我们眼里我们只.

2021-03-19 00:19:47 156

原创 操作系统之内存超载(交换和虚拟内存)

若计算机的物理内存足够大,那么可以保存所有进程。但实际上,所有进程所需要的RAM数量总和通常远超存储器所支持的范围。面对内存超载问题,操作系统有两种通用方法,一是交换,把一个进程完整调入内存,使该进程运行一段时间,然后把他存回磁盘,空闲进程主要存储在磁盘上,当他们不运作时也就不会占用内存。另一种策略是虚拟内存,该策略能使程序在只有一部分被调入内存的情况下运行。交换交换系统的操作如下图所示阴影部分为未使用内存,在程序运行时A首先被调入磁盘,在最后又被调入内存。交换在内存中会产生众多空间区,通过把所.

2021-03-15 15:34:14 1109

原创 (箱子)桶排序及基数排序

桶(箱子)排序桶排序是基于链表的,相邻的桶之间和桶中相邻的元素之间皆用链表相连接,可以把它想象成一个矩阵。用一个例子来说明桶排序。假设有一个链表,其中的元素需要进行排序,元素为ABCDEFGHIJ,其值依次为2454304344,如A2->B4->C5->D4->E3->F0->G4->H3->I4->J4。若根据值进行排序。首先我们定义5个桶bin[5]用来装这10个元素,然后依次遍历每个元素,根据其值将其放入对应的桶中,及bin[0]=F,bi

2021-03-13 21:55:09 312 1

原创 C++数据结构之线性表(自定义数组)

首先利用抽象类LinearList来定义定义一个线性表template<class T>class LinearList {public: virtual ~LinearList() {}; virtual bool empty()const = 0; virtual int size()const = 0; virtual T &Getelement(int index)const = 0;//返回index下标处元素 virtual int ElementPos(c

2021-03-13 12:28:48 535

原创 C++知识回顾

C++知识回顾传值参数函数执行时,实参赋值给形参,复制过程是由形参类型的复制构造函数来完成,若实参形参类型不同则会类型转化,把实参转换成形参类型(允许转换的情况下)。函数运行结束时形参类型的析构函数负责释放形参。所以函数调用不会改变与形参对应的实参的值。引用参数实参为形参的别名,函数被调用时程序没有复制实参的值,函数返回时也没有调用析构函数。常量引用参数用关键字const指明函数不可修改的引用参数,告诉用户该函数不会修改实参。template<class T>//模板函数T

2021-03-05 22:24:20 85

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除