百度移动软件开发面试准备

1. 虚函数与纯虚函数的区别

  • 虚函数:在基类中声明为virtual,可以在派生类中重写。可以有实现。
  • 纯虚函数:在基类中声明为virtual并赋值为0,表示该函数没有实现,派生类必须重写。用于定义接口。

2. C++中如何实现一个接口

在C++中,接口通常通过纯虚类实现。一个类中只包含纯虚函数,且不包含任何实现。例如:

cpp复制代码class Interface {
public:
    virtual void method() = 0; // 纯虚函数
};

3. 用malloc申请内存的时候需要传参,为什么free的时候不用?

malloc需要参数来指定要分配的内存大小,而free只需要指向要释放的内存的指针。free会根据指针找到对应的内存块并释放。

4. vector和数组的区别

  • 数组:大小固定,内存分配在栈上,不能动态调整。
  • vector:大小可变,内存分配在堆上,支持动态调整和丰富的成员函数。

5. 对象可以在栈中开辟吗

是的,C++中的对象可以在栈上创建。例如:

cpp复制代码class MyClass {
public:
    int value;
};

MyClass obj; // 在栈上创建对象

6. 什么是抽象类,抽象类可以实例化吗

抽象类是包含至少一个纯虚函数的类。抽象类不能被实例化,只能被继承。

7. map怎么实现

std::map通常使用红黑树(自平衡二叉搜索树)实现,提供有序的键值对存储,支持快速查找、插入和删除。

8. vector怎么实现

std::vector通常使用动态数组实现,支持动态扩展。当容量不足时,会分配更大的内存并复制原有元素。

10. 哈希表怎么实现

哈希表使用哈希函数将键映射到数组索引。处理冲突的方法包括链式法(使用链表存储冲突的元素)和开放地址法(寻找下一个空位)。

11. 打开一个网页,输入一个网址,一直到页面显示,经历的过程是什么

  1. DNS解析:将网址解析为IP地址。
  2. 建立TCP连接:与服务器建立连接。
  3. 发送HTTP请求:请求网页数据。
  4. 服务器响应:返回网页数据。
  5. 浏览器渲染:解析HTML、CSS、JavaScript并显示页面。

12. TCP和UDP的区别

  • TCP:面向连接,可靠传输,流量控制,适合需要保证数据完整性的应用(如HTTP)。
  • UDP:无连接,不可靠传输,适合实时应用(如视频会议)。

13. TCP粘包是什么,怎么解决这个问题

粘包是指多个TCP数据包在接收时被合并为一个包。解决方法包括:

  • 使用定长包:每个包有固定长度。
  • 使用分隔符:在包之间添加特定分隔符。
  • 使用包头:在包头中包含包的长度信息。

14. 列举几个HTTP状态码,说出他们的含义

  • 200 OK:请求成功。
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器内部错误。

15. 状态码第一位是什么含义

HTTP状态码的第一位表示响应的类别:

  • 1xx:信息性状态码。
  • 2xx:成功状态码。
  • 3xx:重定向状态码。
  • 4xx:客户端错误状态码。
  • 5xx:服务器错误状态码。

16. HTTP请求头、请求体

  • 请求头:包含请求的元信息,如请求方法、URL、HTTP版本、用户代理等。
  • 请求体:包含请求的具体数据,通常在POST请求中使用。

17. URL的组成部分

  • 协议:如httphttps
  • 主机名:如www.example.com
  • 端口(可选):如:80
  • 路径:如/path/to/resource
  • 查询字符串(可选):如?key=value
  • 片段标识符(可选):如#section
全部评论

相关推荐

02-24 10:34
门头沟学院 Java
已注销:之前发最美的女孩基本爱答不理,发最帅的hr终于有反馈了,女孩子也要自信起来
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客企业服务