0%

面试题

c/c++语言基础

  1. 面向对象三大特性
    封装,继承,多态
  2. 多态的实现和什么是虚函数
    通过虚表和虚表指针实现
  3. 纯虚函数
    定义了纯虚函数的类不能实例化,只能通过子类重写,用来实现抽象类
  4. 复制构造函数什么时候被调用
  • 作为函数参数
  • 作为函数返回值
  • 用一个对象初始化另外一个对象,有 2 中形式,classObj o2(o1), classObj o2 = o1;
    复制构造函数和赋值运算符区别:主要看是否产生新的实例,有新实例就是复制构造函数
    classObj o1;
    classObj o2;
    o2 = o1; // 调用赋值运算符
  1. 重载
    函数重载和运算符重载

  2. coredump 如何开启
    ulimit -c unlimited 开启
    ulimt -c 0 关闭

  3. memcpy 和 memmove 区别
    memmove 可以处理内存重叠问题(dest 指针在 src+count 的内部),memcpy 不行

  4. 大小端区别,网络是什么端
    cpu 对内存中数据解释不同,小端,低位在低的内存地址,大端,高位在低内存
    x86 是小端,arm 小端
    网络是大端模式

  5. malloc 和 realloc 区别
    realloc(void * ptr, size_t size)
    ptr 为空,跟 malloc 一样
    ptr 不为空,size 为 0,跟 free 一样
    ptr 和 size 都不为 0,size 小于原来大小,则截断,返回原指针,size 大于原大小,可能返回原指针,或者返回新指针,原指针被释放

  6. makefile 相关

  7. c++11 新特性

python 语言

  1. 包裹函数?

数据结构与算法

  1. 找链表的中间节点
    两个指针,一个指针每次是另外一个的 2 倍前进
  2. map 和 hash map 区别
    map 底层是红黑树,插入,查找,删除都是 O(log2N)
    hash_map 底层是哈希表,需要处理冲突

操作系统

  1. 进程通信和线程同步

  2. linux 内核中的锁,原子锁

  3. 查看系统性能命令,ps,netstat,io 方面的是啥?iostat

  4. tcpdump,监控一个网卡的命令

  5. linux 内存管理,页面寻址

计算机网络

  1. 浏览器打开一个地址发生了什么事情?
  2. ip 层做什么事情?
  3. tcp,udp 区别
  4. linux socket 编程函数和流程
  5. accept 是在三次握手的那个?
    客户端 connect 后,三次握手结束,accept 才返回
  6. send 发完是一定成功吗?数据去哪里了?
  7. 服务器编程模型
  • 同步阻塞模型,accept,read,write 都会是进程阻塞
  • 多进程模型,accept 与客户端建立连接后,fork 子进程,在子进程中 read 和 write
  • 多线程模型,可以按需生成,可以用线程池,Leader follower(LF),缺点:(1)多线程不稳定,一个线程异常影响其他线程,(2)多线程同步问题导致性能下降
  • IO 多路复用模型,select/poll,或者 epoll
  1. select,poll,epoll 区别
  2. 网络请求的触发?水平触发,边缘触发
  3. 阻塞,非阻塞,同步,异步
  4. IO 模型
    五种 IO 的模型:阻塞 IO、非阻塞 IO、多路复用 IO、信号驱动 IO 和异步 IO;前四种都是同步 IO

1) nigux 相关

数据库

分布式系统

分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾

K8S,Doucker

  1. CAS

CAP

K8S,Doucker

  1. CAS