【面试题】360 C++ 软件开发

本文分享了360软件开发的面试题,涵盖C++编程、TCP/IP、数据结构等多个方面,包括实现strcpy()、判断字节序、TCP拥塞控制、cast类型转换、智能指针、面向对象编程、完美转发、future和thread、网络模型以及进程和线程等知识点。
摘要由CSDN通过智能技术生成

微信搜索“编程笔记本”,获取更多信息
------------- codingbook2020 -------------

今天继续分享面经:360 软件开发,提前批。

面试题

1. 实现 strcpy() ?

string.h中的 strcpy()的函数原型如下:

char *strcpy(char* dest, const char *src);

这个函数的功能是:把从 src 地址开始且含有 ‘\0’ 结束符的字符串复制到以 dest 开始的地址空间。

我们的实现:

char *strcpy(char* dest, const char *src)
{
   
    assert(dest != NULL && src != NULL);

    char *ret = dest;

    do {
   
        *dest = *src;
    } while (*src++ != '\0') {
   
        
    return ret;
}

实现的时候有几个地方需要注意一下:

  • 源串的参数类型为 const ,保证函数不会修改源串
  • 使用 assert 进行指针有效性检查
  • 保存目的串的起始地址并返回

2. 如何判断大、小端字节序,写出代码?

字节序的问题是由于 CPU 对整数在内存中存放方式的不同而造成的。多于一个字节的数据类型在内存中的存放顺序主机字节序。最常见的字节序有两种,小端字节序大端字节序

  • 小端字节序
    即 Little Endian ,简称 LE ,将数据的最低字节放在内存的起始位置。小端字节序的特点是内存地址较低的位存放数据的低位,内存地址高的位存放数据的高位,与思维习惯一致。采用小端字节序的 CPU 有 X86 架构的 Intel 系列产品
  • 大端字节序
    即 Big Endian ,简称 BE ,将数据的高字节放在内存的起始位置。大端字节序的特点是内存中低字节位置存放数据的高位字节,内存中的高位字节存放数据的较低字节数据,与思维习惯不一致。但是与实际数据的表达方式是一致的。如果将内存中的数据直接存放在文件中,打开文件查看会发现和原来的数据的高低位一致。采用大端字节序的典型代表有 PowerPC 的 UNIX 系统

下面我们通过一个简单的例子来获取笔者所使用主机的字节序:

#include <stdio.h>

union Test {
   
    short numb;
    char c[2];
};

int main()
{
   
    printf("sizeof(short) = %d\n", sizeof(short));
    printf("sizeof(char)  = %d\n", sizeof(char));

    un
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值