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而保证不重复的?

  • 相关阅读:
    Linux下安装Tomcat服务器和部署Web应用
    全链路压测
    性能测试二八原则,响应时间2/5/8原则
    chromedriver、firefox-geckodriver、iedriver下载链接
    selenium3+python3环境搭建
    SQL注入原理
    loadrunner之header相关,token等
    安全测试——利用Burpsuite密码爆破(Intruder入侵)
    性能测试之系统架构分析
    性能测试性能分析与调优的原理
  • 原文地址:https://www.cnblogs.com/howo/p/8392797.html
Copyright © 2011-2022 走看看