zoukankan      html  css  js  c++  java
  • Todo list

    C++:

    1、vector的erase()实现,使用时注意事项,项目中遇到的bug。和remove的区别

    2、vector swap()的用于修整空间?为什么不用clear(),因为clear()只是无法保证内存回收。

    3、智能指针的用法shared_ptr,unique_ptr,weak_ptr

    4、深拷贝浅拷贝概念及区别

    5、关键字volatile的意义,多线程中的使用?因为寄存器是各个线程间私有的,编译器优化时会将变量从内存读出,放到寄存器,然后下次直接从寄存器读取这个变量(如果两次操作间没人改变这个变量的话,但是其他线程会改变这个变量)。

    6、explicit和implicit (done)

    7、指针和引用的区别

    8、拷贝构造函数和=运算符重载区别

    9、C++中的显式类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast的含义、使用场景

    10、map的实现(rb_tree),和unordered_map的区别

    C++练习:

    • 用C++实现一个BigInt,支持128位的整形的加减乘除的操作。 https://github.com/guhowo/test/tree/master/BigInt
    • 用C++封装一个数据结构的容量,比如hash table。
    • 用C++封装并实现一个智能指针(一定要使用模板)。

    线程:

    • 线程和进程的区别,什么时候用进程,什么时候用线程
    • 线程池和多线程
    • IO复用之select和epoll
    • 线程安全、可重入
    • 多线程遇到的坑:基类构造函数返回了this指针,派生类的构造函数还没执行完,其他线程就已经获得了残缺的this。

    项目:

    1、ZeroTierOne的架构

    2、ZT的多线程和多进程(使用的线程池,怎么实现,为什么)

    3、使用到的设计模式(Topology是单例模式,。。。工厂模式。。抽象工厂模式)

    4、如何着手开源项目(review源码->注释掉加密压缩函数->抓包->对着代码分析报文格式->一共有XXX种报文,逐一分析)

    5、select和epoll的区别。详述IO复用

    6、为什么使用UDP和不使用TCP传输,应用层如何保证数据的可靠传输

    7、项目中遇到的问题,如何解决的

    疑惑:

    1、IO复用的本质是什么?

    2、多线程、多进程的区别?什么时候用线程,什么时候用进程?有什么问题是多线程解决不了,要用进程的。

    3、多线程和线程池的使用场景(结合短连接长链接)

    4、zt中多线程下是怎么给每个请求分配IP而保证不重复的?

  • 相关阅读:
    溢出省略号
    自定义字体
    jquery实现上一页下一页
    集成学习理解
    常用命令-python篇
    python 多进程和多线程
    10预处理命令上
    9函数
    8指针2
    7指针1
  • 原文地址:https://www.cnblogs.com/howo/p/8392797.html
Copyright © 2011-2022 走看看