二次全面复习
爱若一生
C 菜鸟即将精通
展开
-
c/c++面试官经常提的问题
1.自我介绍一下2.你擅长的技术3.你遇到过的一些问题,及怎么解决的4.你负责项目的哪些模块5.用到过的工具有哪些6.目前的新技术有了解吗?7.重载多态覆盖8.多态写法及实现原理讲一下9.stl相关1.指针的各种用法2.static const #define 他们的用法,用处3.智力题4.位操作5.各种排序算法6.宽字符的处理7.数据原创 2014-12-18 10:25:00 · 5247 阅读 · 0 评论 -
toupper
//仅核心代码:if ( (c >= 'a') && (c c = c - ('a' - 'A'); return c;//tolowerif( () && () ) c = c + ('a' - 'A'); return c原创 2013-12-01 10:24:12 · 647 阅读 · 0 评论 -
如何最简单的搜索一个未知长度链表的倒数第k位。
思路1:时间复杂度是0(n+k);(1)反转链表(2)找到第K个元素思路2:(1)指针p1指向第一个元素;移动K-1次;(2)p2指向头结点;然后p1,p2一起移动,p1指到最后一个,p2指向倒数第K个转载 2014-03-01 17:00:47 · 1253 阅读 · 0 评论 -
__cplusplus区分c编译的还是c++编译的
Code:#ifdef __cplusplusextern "C" { #endif ... #ifdef __cplusplus} #endif 解释:1.c++中定义了__cplusplus,C语言中没有该定义。即:识别是c代码还是c++代码。如下段代码:#include int main(int argc,char *argv[])转载 2014-02-28 17:24:18 · 2337 阅读 · 0 评论 -
TCP 4次挥手
TCP 4次挥手先由客户端向服务器端发送一个FIN,请求关闭数据传输。当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ为什么要4次挥手?确保数据能够完成传输。但关闭连接时,当收转载 2014-02-28 12:31:41 · 1025 阅读 · 0 评论 -
并行与并发的区别
并行是指在同一时刻,有多条指令在多个处理器上同时执行。并发是指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。原创 2014-02-28 17:17:00 · 642 阅读 · 0 评论 -
(int (&p)[100])
void bb(int (&p)[100]){ printf("%d\n", sizeof(p));}int main(int argc, char *argv[]){ int aa[100]; bb(aa);}打印4 还是 400呢?正确答案:打印400原创 2014-02-28 14:32:36 · 731 阅读 · 0 评论 -
x&(x-1)表达式的意义
求下面函数的返回值(微软) -- 统计1的个数-------------------------------------int func(int x){ int countx = 0; while(x) { countx++; x = x&(x-1); } return countx;}转载 2014-02-28 14:09:29 · 1269 阅读 · 0 评论 -
TCP连接建立过程中为什么需要“三次握手”
TCP连接建立过程中为什么需要“三次握手”传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层(Transport layer)通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑、带宽、延迟、分组大小和其他参数。转载 2014-02-28 12:30:31 · 896 阅读 · 0 评论 -
Tcp状态更变
、=============---原创 2014-02-28 19:44:57 · 726 阅读 · 0 评论 -
Internet采用的网络协议以及该协议的主要层次结构
TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目转载 2014-02-28 18:20:53 · 10166 阅读 · 0 评论 -
进制转换
二转十: 110010111000100011*2^0 + 1*2^4 + 1*2^8 +1*2^9 +1*2^10 + 1*2^12 + 1*2^15 + 1*2^16十转二:97 --> 97/2 = 48 余 148/2 = 24 024/2 = 12 012/2 = 6 06/2 = 3原创 2014-02-28 15:39:32 · 730 阅读 · 0 评论 -
c/c++面试题
/* 不反转链表的情况下,反向打印链表元素 */void reverse_print(struct linknode *head){if(head->next != NULL) reverse_print(head->next);printf("%d ", head->data);}-----/* 遍历原链表,逐个取出链表元素并插入新链表的表头,原创 2013-11-28 10:24:43 · 720 阅读 · 0 评论 -
C++虚函数表的工作原理
http://wenku.baidu.com/link?url=mIvxihcMu29W2GV0poN_oTLiliup_v0GVQeoo1oxrhTqYGwbUk22gy8Uj8O4hH-ASTe0HinqG4xn4RLO1Du80Sawpsg9qYPoQ8NO1T1wTqW虚函数表工作原理 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的转载 2013-12-01 15:29:01 · 2542 阅读 · 0 评论 -
C/C++中内存区域划分大总结
C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C和C++内存区域的划分。一、 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是转载 2014-02-20 07:35:52 · 721 阅读 · 0 评论 -
重写String类
classs String{ private: char *m_data; //数据成员 public: String(const char *str = NULL) //普通构造函数 { if (str == NULL) {转载 2014-02-19 23:34:25 · 3073 阅读 · 0 评论 -
指针函数与函数指针数组指针指针数组
http://blog.csdn.net/ameyume/article/details/8220832转载 2014-12-18 10:45:29 · 612 阅读 · 0 评论 -
内存对齐
http://blog.csdn.net/hairetz/article/details/4084088转载 2014-12-18 12:16:55 · 656 阅读 · 0 评论 -
typedef #define区别
http://www.cnblogs.com/kerwinshaw/archive/2009/02/02/1382428.html转载 2014-12-18 11:58:40 · 671 阅读 · 0 评论 -
const 指针与指向const的指针
http://www.cnblogs.com/younes/archive/2009/12/02/1615348.html转载 2014-12-18 10:43:17 · 753 阅读 · 0 评论 -
重载、覆盖与隐藏
成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。8.2.1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与转载 2014-12-18 10:16:45 · 588 阅读 · 0 评论 -
多进程侦听同一端口
多进程侦听同一端口 2013-03-05 09:12:55| 分类: 网读札记 | 标签:linux |举报|字号 订阅来源:网易博客 Tsecer的回音岛http://tsecer.blog.163.com/blog/static/150181720125394056715/一、端口侦听我们知道,系统中的互联网端口地址是系统级唯转载 2014-03-19 15:10:37 · 11616 阅读 · 0 评论 -
工作室的一些规范或杂乱
1.if判断常量可以放在后面 --> if (pszBuf == NULL)2.使用宏定义 --> XY_FAILED_JUMP(Condition)3.所需的变量都统一放置在前面并且初始化它 --> 所有变量前置,初始化4.能够对齐尽量对齐代码 --> 代码尽量都对齐5.使用数组,来达到高效的查询效率。 --> 数组查找效率高6.原则就是:唯一出口 --> 函数唯一出口7原创 2014-03-10 16:31:40 · 959 阅读 · 0 评论 -
柔性数组
柔性数组也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。 柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内转载 2014-03-14 11:31:13 · 2670 阅读 · 0 评论 -
ac-typdef int (*fukao)()
typdef int (*fukao)() :把int (*xxxxx)()类型的函数简化定义为 fukao,以后fukao类型就代表这种函数的类型。 这里应该把int (*xx)()看做一个类型,把fukao看做一个新类型。要这样看转载 2014-03-12 15:36:25 · 676 阅读 · 0 评论 -
map key char*
STL中map的key能否用char *呢?当然可以!在程序中需要用到一个map,本来是这样写的,map mapStr;为了追求效率,把string改成了char *,map mapStr;结果呢?可想而知,每次放进去的是指针,当查找的时候就出问题了,总是找不到。因为key中存放的是指针,当然找不到了。需要重载一下操作符,当查找时比较指针对应转载 2014-03-11 12:04:17 · 6303 阅读 · 0 评论 -
strcat函数
char *Strcat(char *&StrDes, const char *StrSrc){ assert(StrDes != NULL && StrSrc != NULL); char *p = StrDes; while (*p != '\0') { p++; } while (*StrSrc != '\0') { *p++ = *StrSrc+转载 2014-02-19 23:39:24 · 673 阅读 · 0 评论 -
Strcat,strcpy,strcmp,Strlen函数原型
Strcat,strcpy,strcmp,Strlen函数原型 这几个函数在面试的时候经常被考到,但没看过要准确又完美的写出来也不是易事,传说IBM曾经也考过写strcpy原型,说明这几个函数真的很有代表性,因此记于此处以便温习。以下皆经本人调试过。1、Strcat函数原型如下:#include #include #include char *strca(c转载 2014-02-20 07:30:16 · 781 阅读 · 0 评论 -
epoll
http://www.cnblogs.com/haippy/archive/2012/01/09/2317269.html原创 2013-11-28 18:59:35 · 622 阅读 · 0 评论 -
c++链表的实现及栈队列
链表的源代码实现:typedef int T;class List{private:struct Node { T data; Node* next; Node(const T& t=T()):data(t) { next=NULL; }};//头节点Node* head;public:L转载 2013-12-01 10:51:44 · 2644 阅读 · 0 评论 -
栈的C++实现:数组实现
#ifndef STACK_H_ #define STACK_H_ const int Max=20; template class stack{ T s[Max]; int top; public: stack(); void push(const T &item); T pop(); int stackempty(转载 2013-12-01 10:41:11 · 1759 阅读 · 0 评论 -
进程线程间同步
一:Posix消息队列(通过固定名称来创建和引用消息队列)1.可以认为是一个消息链表,有足够的权限的线程可以往队列中放置和获取消息。2.可指定优先级、在空队列放置消息时候能够产生一个信号或启动一个线程3.创建消息队列mq_open(),mq_close()关闭(并不删除),mq_unlink()删除消息队列; mq_getattr mq_setattr 最大消息数,单个消息最大大原创 2013-11-18 17:08:01 · 943 阅读 · 0 评论 -
linux守护进程
1.守护进程也称精灵进程,是生存期较长的一种进程。常常在系统自举时启动,仅在系统关闭时才终止。2.编写守护进程的一些规则: 1.首先调用umask讲文件模式创建的屏蔽子设置为0 2.调用fork,然后exit父进程,这就保证了子进程不是一个进程组的组长进程,这对setsid调用是必要的前提条件 3.调用setsid创建一个新会话:1.成为新会话的首进程2.成为新进程组的组长进程 3原创 2013-11-18 11:15:43 · 895 阅读 · 0 评论 -
linux信号
1.软件中断,提供了一种处理异步时间的方法2.信号处理函数3.信号处理方式:忽略,默认,函数,SIG_ERR失败4.kill()想别人发送信号,raise想自身进程发送信号5.信号集。6.原创 2013-11-18 10:48:37 · 720 阅读 · 0 评论 -
linux线程
===线程===好处:1.能够处理异步事件的代码2.能很方便的共享本进程的资源与数据,无需提供类似复杂的进程间通信机制3.任务的并行处理4.改善了响应时间5.且比多进程开销少很多2.线程id是一个非负数,但是它的实现可以用一个结构来代表pthread_t数据类型,所以可移植的操作系统实现不能把它作为整数处理,因此比较2个线程id得用:pthread_equal(原创 2013-11-18 10:39:23 · 829 阅读 · 0 评论 -
编程珠玑
重要概念:1.深入实际问题解决问题2.算法的融会贯通获得简单而高效的代码3.数据结构在软件设计中所起到的关键作用4.程序验证:断言。。5.测试用例:自己测试好,稳定6.粗略估算法7.代码调化通常在系统实现的后期完成8.原创 2013-11-17 10:01:46 · 711 阅读 · 0 评论 -
设计模式
Strategy(策略模式):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。把算法单独成一个对象,达到可扩展不修改的目的。本章OO原则:1.封装变化 2.多用组合,少用继承 3.针对接口编程,不针对实现编程 (可以应付变化的软件&复用,可扩充,可维护)弹力十足。软件的耗时不是在开发上,而是在维护上。so,我原创 2013-11-17 11:43:01 · 615 阅读 · 0 评论 -
EffectiveC++
1.用const替换#define ,因为const具有检查性。2.尽可能使用const3.重新实现new delete的几种原因。。。EffectiveC++原创 2013-11-17 11:16:35 · 732 阅读 · 0 评论 -
linux程序设计
1.虚拟内存:磁盘一个称为“交换空间”2.mysql使用3.gdb a.out bt r print j list break 21 info 4.lint程序5.原创 2013-11-17 09:53:07 · 698 阅读 · 0 评论 -
代码揭秘
本次复习由于时间有限;就只看之前的笔记了。靠第一章:概述1.编写高效程序首先需要选取一组最好的算法和数据结构。2.了解计算机内部结构和工作原理至少涉及到3门独立科目:计算机组成原理、计算机操作系统、编译原理3.浮点数是近似值4.对齐是由编译器来实施的。5.malloc与new区别 1.new会调用构造函数,会帮类成员进行初始化 2.new无需指明大小,因为它知道原创 2013-11-17 09:34:04 · 939 阅读 · 0 评论