您的位置:首页 > 理论基础 > 计算机网络

计算机网络-C++基础知识,面试复习题

2016-10-11 14:26 429 查看
atoi函数

#include <iostream>
#include <cstring>
using namespace std;
int atoI(char *s)
{
if(s == NULL)
{
return -1;
}
int i = 0;
int sum = 0;
while(s[i] != NULL)
{
sum *= 10;
sum += s[i] - '0';
i++;
}
cout<<strlen(s)<<endl;
return sum;
}
int main()
{
char *s = "1234";
cout<<atoI(s)<<endl;
}


全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

8086是多少位的系统?在数据总线上是怎么实现的?

8086微处理器共有4个16位的段寄存器,在寻址内存单元时,用它们直接或间接存放段地址。

代码段寄存器CS:存放当前执行程序的段地址

数据段寄存器DS:存放当前执行的程序所用操作数的段地址

堆栈段寄存器SS:存放当前执行的程序所用堆栈的段地址

附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址

由CS:ip构成指令地址,ss:sp 构成堆栈的栈顶地址指针.

00000-FFFFF,2^20次方 为1MB

物理地址= 段基地址*10H+偏移地址?这是什么意思?

什么是中断?CPU如何处理中断?

CPU上电后,进入操作系统的main()之前必须做什么工作?

ISO OSI的物理层layer1,链路层layer2,网络层Layer3的任务是什么?

有线电话和无线电话的区别是什么?无线电话特别需要注意什么?

软件开发的五个主要步骤?

makefile文件的作用?

手机用户在从一个基站漫游到另外一个基站的过程中,都会发生什么?

了解以下的协议: ospf, bgp, is-is rip

简述普通电话和Ip电话的区别

计算机的基本组成部分以及各自的作用

static有什么用途?

1)限制变量的作用域 (文件级的)

2)设置变量的存储区(全局数据区)

什么是平衡二叉树?(递归的定义:左右子树都是平衡二叉树,且左右子树的深度差值的绝对值不大于1)

堆栈溢出一般是由什么原因导致的?

1:没有回收垃圾资源

2:层次太深的递归调用

什么函数不能声明为虚函数?

constructor

但是disconstructor函数可以声明为虚函数

系统为一个空类创建的成员函数有哪些?

Internet物理地址和ip地址转换采用什么协议? arp地址解析协议

全局变量和局部变量能否重名?

char *s = "123";
int main()
{
char *s = "1234";

cout<<s<<endl;
cout<<::s<<endl;
}


全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

1可以,在不同的C文件中,以static形式声明同名全局变量~

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
int a = 10;
int d = 10*a++;
cout<<d<<endl;
cout<<a<<endl;
}
这里可以看出++ 的优先级没有*高

#include <iostream>
#include <cstring>
using namespace std;
typedef union{
long i;
int k[5];
char c;
}Date;
class A{
long i;
int k[5];
char c;
};

int main()
{
cout<<sizeof(A)<<endl;//28
cout<<sizeof(Date)<<endl; // 20, union,取最大变量的内存地址!!!!
cout<<sizeof(long long)<<endl;//8
cout<<sizeof(long)<<endl;  //4
cout<<sizeof(double)<<endl;//8
} //在这里要记住,double和long long 是一样的~


用两个栈实现一个队列的功能?

http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html

C++模板详解…

时间复杂度为O(1),这个办法相对较好

#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
template<class T> class que{
public:
void push(T a)
{
A.push(a);
}
void pop()
{
if(B.empty())
{
while(!A.empty())
{
B.push(A.top());
A.pop();
}
}
cout<<B.top()<<endl;
B.pop();
}
private:
stack<T> A;
stack<T> B;
};
int main()
{
que<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);

q.pop();
q.pop();
q.pop();
q.pop();
}


用预处理指令#define声明一个常数,用以表明1年中有多少秒?

#define senconds_per_year (60*60*24*365)UL


1 define语法的基本知识(不能以分号结束、分号的使用等等)

2 懂得预处理器将为你计算常数表达式的值,因此直接写出你是如何计算一年中有多少秒而不是计算出实际的值是更清晰而没有代价的

3 意识到这个表达式将使一个16位机的整形数溢出,因此需要用到长整型符号L,告诉编译器这个常数是长整型数

4 如果你在你的表达式中用到UL(无符号长整型),那么你有了一个好的起点

static和const的含义

volatile关键字的含义,并给出三个不同的例子~

内存里的值可能会变化,因此每次都是重新读取寄存器中的值

1)并行设备的硬件寄存器

2)一个中断服务子程序中会访问到的非自动变量

#include <iostream>
#include <cstring>
#include <stack>
#include <stdlib.h>
using namespace std;
void foo()
{
unsigned int a = 6;
int b = -20;
cout<<a+b<<endl;
//表达式中存在有符号类型和无符号类型时,所有的操作数都自动转化为无符号类型,因此-20变成
//了一个非常大的正整数~
}
int main()
{
puts(">6");
foo();
}

#include <iostream>
#include <cstring>
#include <stack>
#include <stdlib.h>
using namespace std;
int main()
{
int a = 1;
int b = 2;
int c = a+++b; //a++ + b;
cout<<c<<endl;
//这里的符号优先级,是++大于+的~
}


编写算法,在10亿个浮点数当中,选出其中最大的10000个

http://blog.csdn.net/laibinghua/article/details/5904636

编写一unix程序,防止僵尸进程的出现

首先要了解什么叫僵尸进程

给两个数组求交集~

可怕的题目终于来了!

搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为

不超过255byte,内存使用只有1G

国内的一些贴吧有几十万个主题,假设每一个主题都有上亿的跟帖子,怎样设计这个系统速度最好,请描述思想、写出算法、空间和时间复杂度

什么是预编译、何时需要预编译?

预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如include包含文件代码的拷贝,define宏定义的替换和条件编译等,就是为编译做的预备工作阶段(可以放在程序中的任何位置)

进程和线程的区别

运算符优先级问题

赋值运算符《逻辑与运算符《关系运算符《算法运算符

字符串倒序

Iterator和指针的区别

游标和指针~ 游标是指针,但不仅仅是指针。游标和指针很像,功能很像指针~

class与struct的区别

(1)默认继承权限

(2)成员的默认访问权限

A a = {1,2,3} 不管A是个struct还是class,前提是这个类、结构足够简单,比如所有的成员是public的,所有的成员都是简单类型,没有显式声明的构造函数

class与struct如果定义了构造函数的话,都不能用大括号进行初始化

如果没有定义构造函数,struct可以用大括号初始化

如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 namespace