问的都是比较基础的问题,涉及到各个方面:
1.自我介绍
2.先是笔试题中的最后一道写atoi()函数的题,当时我把char型的字符也考虑进去了,应该是不对的,他问我说如果要是非法输入的话程序应该如何处理,除了打印输出提示外还有什么别的办法?
3.问了问简历上的项目和实习情况,实习都是用什么系统和数据库
4.static变量存放位置,C程序中数据都存在哪几个区,new运算符执行后在哪个区,C++类中的static成员变量初始化时是否一定需要赋初始值,若不用初始值是什么?
C++中static成员变量初始化时不一定需要赋初始值,不用初始值时其值为0,但是一定需要初始化。
#include<iostream>
using namespace std;
class Myclass
{
private:
static int sum; //声明静态数据成员
public:
void GetSum();
};
int Myclass::sum;
void Myclass::GetSum()
{
cout<<"sum="<<sum<<endl;
}
int main(void)
{
Myclass M;
M.GetSum();
return 0;
}
程序的结果为:sum=0 若上述程序中注释掉语句: int Myclass::sum,则程序无法通过编译。也可以定义并初始化并赋初值如 int Myclass::sum=0类成员的初始化及static成员变量的初始化问题,找了一些资料:
5.如果程序中的指针没有初始化,程序运行将出现什么问题
6.查找平衡二叉树的时间复杂度,查找二叉排序树的时间复杂度
O(logN)
7.快速排序的思想,时间复杂度
8.内存泄露后会出现什么情况,如果申请内存不够的话再是否还能再申请内存,将是什么结果
在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏会因为减少可用内存的数量从而降低计算机的性能。最终,在最糟糕的情况下,过多的可用内存被分配掉导致全部或部分设备停止正常工作,或者应用程序崩溃。
9.C++中的容器举例,map容器与vector容器的区别
10.linux系统查看cpu利用率,系统内存使用情况的命令是什么
11.操作系统中进程与线程的区别,进程是否能够共享变量
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
12.是否编写过socket程序,其服务端和客户端的实现流程是怎样的
13.TCP/IP协议分几层都是什么,IP协议在哪层,TCP协议在哪层,TCP和UDP的区别
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。
14.数据库有哪几范式,第三范式是为了解决什么问题
15.数据库数据想分组的SQL语句,创建表,创建索引的语句
16.做项目的过程中遇到过什么问题没有,是怎么解决的
17.自己在业余时间有没有额外钻研过什么技术