![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 78
长着胡萝卜须的栗子
这个作者很懒,什么都没留下…
展开
-
【项目】MFC下TCP/IP的套接字编程中CSocket,CSocketfile与CArchive类
CSocket类与CAsyncSocket类CAsyncSocket类编程模型 在一个MFC应用程序中,要想轻松处理多个网 络协议,而又不牺牲灵活性时,可以考虑使用CAsyncSocket类,它的效率比CSocket 类要高。CSocket类编程模型 使用CSocket对象涉及CArchive和CSocketFile 类对象。 以下介绍的针对字节流型套接字的操作步骤中,只有第3步对于客户方和服原创 2016-08-11 21:04:18 · 4255 阅读 · 0 评论 -
【面试】C++继承问题集锦
继承的概念答:继承是面向对象的三大特性之一,继承是指一个对象直接使用另一对象的属性和方法。 继承可以使子类具有父类的各种属性和方法。 继承的主要目的是实现代码的重用。派生类与基类的转换答:派生类总是可以转换为基类的引用类型。基类转换为派生类要在确认安全的条件下,使用强制转换来进行。有哪几种继承方式答: 继承的方式分为公有继承public,保护继承protected和私有继承priv原创 2016-08-12 00:33:30 · 2175 阅读 · 0 评论 -
C++泛型编程1——函数模板实例化,模板参数,重载及特化
在C++中我们都知道引入了函数重载,那么在实际应用过程中: 如果我们想要实现一个加法函数,我们可以写出很简单的代码: int ADD(int a,int b){ return a+b;} 上面的函数很简单,但是仔细想一下,这样就实现了加法操作嘛?当我们的实参类型为double,float时,又怎么处理加法呢? 我们可以多定义几个函数 double ADD(doubl原创 2016-08-13 02:09:37 · 6331 阅读 · 0 评论 -
【面试】C++多态问题集锦
1.什么是多态答:多态是面向对象的重要特性之一,它是一种行为的封装,是同一种事物所表现出的多种形态,简单地说是”一个接口多种实现“2.多态的作用答:多态技术允许将父类设置成和他的一个或更多的子对象相等。3.多态的分类答:有两种类型的多态性:编译时的多态性。编译时的多态性是通过重载来实现的。运行时的多态性。运行时的多态性是通过虚成员实现的。4.在C++中如何实现多态答:多态有动态多态,静态多态,原创 2016-08-11 23:55:25 · 3833 阅读 · 0 评论 -
数据结构
ps:这部分请一定关注时间复杂度的计算和算法的优化,因为在面试中都会要求计算时间复杂度和不断优化你写的算法1.线性表1. 顺序表和链表的优缺点,它们分别在什么场景下使用? 2. 求一个单链表中节点个数 3. 删除一个无头单链表的非尾节点 4. 在无头单链表的一个节点前插入一个节点 5. 单链表实现约瑟夫环 6. 逆置单链表 7. 单链表排序 8原创 2016-08-13 19:53:52 · 576 阅读 · 0 评论 -
【排序】快速排序及其非递归实现,归并排序详解
快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。 我们知道快速排序用的是分治的基本思想:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归的解决这些子问题,然后将这些子问题的解组合为原问题的解。 快速排序的基本思想是: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行原创 2016-08-08 19:32:09 · 1814 阅读 · 0 评论 -
C++基础
基本语法1. 什么时候使用引用作为函数参数?2. 什么时候使用引用做函数返回值?3. 使用引用做函数返回值要注意些什么问题?4. 什么时候使用常引用?5. 引用和指针的区别和联系?6. const定义常量和#define 定义宏的优缺点?7. C++中使用哪些技术可以替代宏?为什么建议使用使用这些技术去替代宏?8. malloc/free和new/delete的区别和联系?9. 在原创 2016-08-13 19:50:42 · 610 阅读 · 0 评论 -
C++多态篇3——虚函数表详解之多继承、虚函数表的打印
在上上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我最后简单了剖析了一下虚函数表以及vptr。 而在上一篇文章C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏中我详细介绍了虚函数的函数重载,函数覆盖以及函数隐藏的问题,其实在那一篇文章中,对单继承的虚函数已经做了十分详细的解答了,如果对前面有兴趣的人可以先看一下那篇文章。 在这一篇中,我原创 2016-04-15 15:49:05 · 8391 阅读 · 4 评论 -
C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏
上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我在最后分析了虚函数与虚函数表的内存布局,在下一篇详细剖析虚函数及虚函数表的过程中,我发现有关函数重载,函数覆盖,函数重写和函数协变的知识也要理解清楚才能对虚函数表在内存中的布局,对派生类的对象模型以及对多态的实现有更深的理解。 所以这一篇我作为一篇过渡篇,也同时对我以前写过的一篇博文进行一个收尾。在C++继承详解原创 2016-04-15 01:23:17 · 7442 阅读 · 2 评论 -
C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable
前面我写了几篇关于继承的博文,分别为: c++继承详解之一——继承的三种方式、派生类的对象模型 C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则) C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1) C++继承详解之四——is-a接口继承和has-a实现继承 这几篇博文只涉及到了继承的知识,没有加入虚函数没有涉及到多态的知识,从这篇开始我会更原创 2016-04-13 15:13:24 · 8036 阅读 · 5 评论 -
C/C++
C与C++的区别答:C是结构化语言,重点在于算法和数据结构。 C++是面向对象的语言。首先要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题。 最大的区别在于,解决问题的思想方法不一样。const与define答:define只是用来做文本替换,他的生命周期止于编译器,存在于程序的代码段,在实际程序中只是一个常数,一个命令的参数,没有实际的存在。 const常量存在于程序原创 2016-08-31 00:34:50 · 712 阅读 · 0 评论 -
计算机网络
HTTPGet和Post答:get和post都是http协议中与服务器交互的方法。 url地址用于描述一个网络上的资源,而get,post,put,delete等方法就对应着这个资源的查,改,增,删四个操作。 Get方法一般用于获取/查询资源信息。 Post一般用于更新资源信息。 二者区别为: 1.Get提交的数据会放在URL后,以问号?分隔URL和传输数据,参数以&相原创 2016-08-31 01:17:01 · 631 阅读 · 0 评论 -
【面试】GDB调试
用GDB调试多进程程序 如果一个进程通过fork系统调用创建了子进程,gdb会继续调试原来的进程,子进程则正常运行。那么该如何调试子进程呢?单独调试子进程 子进程从本质上说也是一个进程,因此我们可以用通用的gdb调试方法来调试他。 举例来说如果要调试一个服务器中的某一个子进程,我们可以先运行服务器,然后找到目标子进程的PID,再将其附加(attach)到gdb调试器上,具体操作为:原创 2016-08-11 00:32:14 · 3500 阅读 · 0 评论 -
C语言与C++中static,extern的用法及区别总结
在C语言中:隐藏 很多人经常会忘了这一条。其实这个作用很常用也很重要。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。 为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 char a = 'A'; // global variablevoid msg() { printf("Hello\n原创 2016-08-10 22:31:21 · 4503 阅读 · 0 评论 -
【项目】基于TCP/IP的socket编程之心跳机制
什么是心跳机制? 想一下, 当tcp连接被破坏后, 如果是死连接了, 服务端和客户端怎样才能知道信息能不能到达对方呢? 很自然的想法是, 不断地给对方发探测信号, 看有没有回应, 这就是心跳机制的直白原理。 所谓的心跳即是数据包, 发心跳就是一方向另一方发送的数据包, 不断地发送, 如果收不到回应, 那么就有理由认为是tcp连接出了问题。 那为什么要叫心跳呢? 你摸一下你的心, 你看原创 2016-08-11 20:48:28 · 9818 阅读 · 0 评论 -
C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则)
在这一篇文章开始之前,我先解决一个问题。在上一篇C++继承详解之一——初探继承中,我提到了在派生类中可以定义一个与基类成员函数同名的函数,这样派生类中的函数就会覆盖掉基类的成员函数。在谭浩强的C++程序设计这本书第十一章,351页最下面有这么一段话: 可在派生类中声明一个与基类成员同名的成员函数,则派生类中的新函数会覆盖基类的同名成员,但应注意:如果是成员函数,不仅应是函数名相同,而且函数的参原创 2016-04-11 13:54:45 · 11928 阅读 · 0 评论 -
c++继承详解之一——继承的三种方式、派生类的对象模型
C++是OOP(Object Oriented Programming)语言,即面向对象编程语言。OOP的核心思想就是数据抽象(类的设计),继承和动态绑定。类展现了C++的封装特性,即将具体的实现过程隐藏,只向外暴露公有接口,即数据抽象,通过数据抽象,我们可以将类的接口与实现分离,(即设计类)。与C相比,类可以通过相互间的继承和派生形成层次结构,派生类继承了基类的数据结构和方法 [编译时]。使原创 2016-04-11 01:00:00 · 34106 阅读 · 0 评论 -
C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1)
在我个人学习继承的过程中,在网上查阅了许多资料,这些资料中有关菱形继承的知识都是加了虚函数的,也就是涉及了多态的问题,而我在那个时候并没有学习到多态这一块,所以看很多资料都是云里雾里的,那么这篇文章我想以我自己学习过程中的经验,由简到较难的先分析以下菱形继承,让初学者先对这个问题有一点概念,在后面会由浅入深的继续剖析。 本篇文章不会涉及到多态也就是虚函数的菱形继承,在后面的文章更新中,我原创 2016-04-12 14:47:01 · 9040 阅读 · 9 评论 -
select,poll,epoll优缺点及比较
在之前我已经分析了这三个函数,请看我之前的文章: IO多路复用之select函数详解 IO多路复用之poll函数详解 IO多路复用之epoll函数详解 这篇文章只总结优缺点,以便面试时回答。select优点1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而poll是毫秒。select缺点1) 单个进程原创 2016-08-17 01:51:11 · 15133 阅读 · 8 评论