腾讯真题简析

//有如下C++代码:
struct A{//1
  void foo(){printf("foo");}//2
  virtual void bar(){printf("bar");}//3
  A(){bar();}//4
};
struct B:A{//5
  void foo(){printf("b_foo");}//6
  void bar(){printf("b_bar");}//7
};
//那么 
A *p=new B;//8
p->foo();//9
p->bar();//10
//代码顺序:8->5->1->4->3 9->2 10->7
//输出为:barfoob_bar
int main(){
    int a[5]={1,2,3,4,5};
    int *p=(int *)(&a+1);//&a是指向数组a的指针,&a+1则是指向数组后面的内存
    printf("%d",*(&a+1));//不确定的数字
    printf("%d",*(p-1));//p-1指向数组最后一个数字(因为p是int*)
}

这里写图片描述

//找出错误
int main()
{
   int i=10;
   int j=1;
   const int *p1;//*p不可变,p可变,可以不初始化
   int const *p2=&i; //和上面一样
   p2=&j;//正确,p2可以变化
   int *const p3=&i;//p3不可变,*p3可变,定义时必须初始化
   *p3=20;//正确,*p3可变
   *p2=30;//错误,*p2不可变
   p3=&j;//错误,p3不可变
   //答案:最后两行错误
return 0;
}

排列组合

题目:爸爸去哪儿中的3对父子站成一排,各自父子之间不能相邻,比如石头不能和郭涛挨着,以此类推,共有几种站法?
分类:
1.前3个位置有3个家庭组成:6*4*2*2*2*1
6:第一个位置有6个选择
4:第二位置有两个家庭(共4个人)
2:第三个位置有一个家庭(共2个人)
2:第四个位置还有3个人可选,但是有一个人和第三位置1家不可选
2:还有2个人可选
1:还有一个人
2.前3个位置有2个家庭组成,分为在第1和3位置:6*4*1*2*1*1
6:第一个位置有6个选择
4:第二个位置选另外两个家庭共4个人
1:第三个位置只能选和第一个位置同一个家庭的
2:第四个位置选未出现过的家庭(2个人)
1:只能选和第二个位置同一家庭的
1:只剩一人

多线程

线程可以继承父线程的所有堆和栈的数据,线程和线程之间有相互独立的栈空间

http

超文本传输协议
http是客户端和服务器之间的请求和应答的标准。用户通过web、网络爬虫等工具像网站(服务器)下载资源,向服务器端口(默认是80)发送http请求。一般基于TCP协议,但也不是必须。
ETAG是一个可以与Web资源关联的记号(token),可以反应信息是否过期。

浅拷贝的问题

class A{
   int i;
};
class B{
   A *p;
public:
   B(){p=new A;}
   ~B(){delete p;}
};
void sayHello(B b){
}
int main(){
   B b;
   sayHello(b);
   /*这一步,将创建一个新的B的对象(假设叫t),
   (t=b)调用系统浅拷贝函数,最后执行两次delete p;
   因为是浅拷贝t和b的资源一致,最后却被删了两次,第二次删除时程序崩溃
}

图和树

全连通图n个节点对应(n-1)+(n-2)+…+1=(n*(n-1))/2个边
树n个节点对应n-1个边

linux

linux下,指定文件file1为所有用户可读,可写,可执行,执行命令:chmod 777。修改file1的拥有者为test,拥有组为user,执行命令:chmod test

猜你喜欢

转载自blog.csdn.net/weixin_41127779/article/details/82219659