指针和引用的应用场景
linux除了malloc还有那些分配内存的方式
calloc, realloc, alloca
kmalloc, vmalloc
malloc和free的区别
tcp和udp的区别
1)连接方面区别
TCP面向连接(如打电话要先拨号建立连接)。
UDP是无连接的,即发送数据之前不需要建立连接。
2)安全方面的区别
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
UDP尽最大努力交付,即不保证可靠交付。
3)传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。
4)连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。
udp如何知道丢包没有,如何保证数据都收到了
函数覆盖(重载)和虚函数的区别
虚函数可以在程序运行的时候实现多态(调用虚函数时通过调用虚表来确定最终调用哪个实际函数)可以说是“动态”的多态;而函数重载(即你说的函数覆盖)是在源代码编译的时候,编译器就可以明确调用哪个函数的,实际上是属于“静态”的多态。
举个例子
class fruit
{
public:
void func()
{
printf("fruit\n");
}
virtual void vfunc()
{
printf("v fruit\n");
}
};
class apple:public fruit
{
public:
void func()
{
printf("apple\n");
}
void vfunc()
{
printf("v apple\n");
}
};
int main(int argc, char* argv[])
{
fruit* f = new apple(); //注意 f是父类指针
f->func();
f->vfunc();
return 0;
}
结果是:
fruit
v apple
例子中func采用了函数覆盖
vfunc采用了虚函数
当fruit类的指针指向一个apple类的对象时,func调用了父类的函数,vfunc调用了子类的函数。
如过是函数覆盖,调用成员函数时,直接调用对象指针所属类的成员函数,例子中为fruit
虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
两个字符串,判断字符是否有重复
如果字符不是一个byte而是Unicode这种4 byte怎么办,map(black red tree), hashmap, trie tree, B+ tree,
很多整数找出其中最大的100个,最小堆
找出一堆整数中的中位数,维护一个最大堆和一个最小堆
两个字符串表示版本号,写一个函数比较哪个版本更新(无首位零)
//1, 1.0, 1.0.0, 1.0.0.0, 1.0.0.1, 1.1, 1.12345678901234567890
#include<iostream>
#include<string>
using namespace std;
//1, 1.0, 1.1, 1.2.3
int cmp(string s1, string s2){
int m=0,n=0;
int i=0,j=0;
while(s1[i]!='\0' && s2[j]!='\0'){
while(s1[i]!='.' && s1[i]!='\0')i++;
while(s2[j]!='.' && s2[j]!='\0')j++;
if((i-m)<(j-n)){
return 2;
}
else if((i-m)>(j-n)){
return 1;
}
else{
for(int k=0;k<i-m;k++){
if(s1[m+k]<s2[n+k])return 2;
else if(s1[m+k]>s2[n+k]) return 1;
}
}
m=++i;
n=++j;
}
if(s1[i]=='\0' && s2[j]=='\0')return 0;
else if(s1[i]=='\0'){
while(s2[j]!='\0'){
if(s2[j]=='.');
else if(s2[j]!='0')return 2;
j++;
}
return 0;
}
else if(s2[j]=='\0'){
while(s1[i]!='\0'){
if(s2[i]=='.');
else if(s2[i]!='0')return 1;
i++;
}
return 0;
}
}
int main(){
return 0;
}
linux多线程函数用过么
RTOS是如何实现实时性的呢
工作中有没有学到学校里学不到的东西
内核态和用户态是什么
C++11了解多少
右值引用了解么
左值和右值
实时操作系统RTOS和OS有什么区别
采用什么方法保证版本避免revision(回退)
什么变量放在栈上,什么放在堆上