腾讯二面准备
2018/3/21 11:44:44
编程基本功扎实,掌握C/C++/JAVA等开发语言、常用算法和数据结构; 熟悉TCP/UDP网络协议及相关编程、进程间通讯编程; 了解Python、Shell、Perl等脚本语言; 了解MYSQL及SQL语言、编程,了解NoSQL, key-value存储原理; 全面、扎实的软件知识结构,掌握操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等专业知识; 了解分布式系统设计与开发、负载均衡技术,系统容灾设计,高可用系统等知识。
复习计划
操作系统及网络编程部分
Linux进程间通讯方式及编程知识
- 见总结文档及demo程序
多个进程同时写共享内存,如何防止内容乱?
多线程访问共享内存的不加锁实现方式
进程线程的区别
同步和异步、阻塞与非阻塞
select、poll和epoll
共享内存两种机制
- 共享内存可以通过 mmap()映射普通文件(特殊情况下还可以采用匿名映射)机制实现, 也可以通过 System V 共享内存机制实现。
- mmap 的机制:在磁盘上建立一个文件,每个进程存储器里面,单独开辟一个空间来进 行映射。mmap 保存到实际硬盘。优点:储存量可以很大(多于主存);缺点:进程间读 取和写入速度要比主存的要慢。
- shm 的机制:每个进程的共享内存都直接映射到实际物理存储器里面。shm 保存到物理存储器(主存),实际的储存量直接反映到主存上。优点,进程间访问速度(读写)比磁 盘要快;缺点,储存量不能非常大(多于主存) 。
- 使用上看:如果分配的存储量不大,那么使用 shm;如果存储量大,那么使用 mmap。
产生死锁的条件
- 互斥条件(Mutualexclusion):资源不能被共享,只能由一个进程使用。
- 请求与保持条件(Hold andwait):已经得到资源的进程可以再次申请新的资源。
- 非剥夺条件(Nopre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
- 循环等待条件( Circularwait ):系统中若干进程组成环路,该环路中每个进程都在等待相 邻进程正占用的资源。
TCP/IP协议栈部分
http状态码及报文格式
http和https的区别
微信扫一扫登录电脑界面的机制
断点续传
TCP三次握手,最后一次ACK包可以携带数据吗?有什么东西控制吗?什么时候携带数据?
TCP四次挥手,为什么要有TIME_WAIT?如果有大量的TIME_WAIT怎么解决?
-
- A不能保证最后的ACK能达到B, 所以, 还应该观望一段时间, 护送一段时间。 如果最后的ACK丢失, 那么B显然收不到, B于是发起了重传FIN的操作, 此时如果A处于CLOSED的状态, 就没办法给对端发ACK了(实际是发RST), 呜呼哀哉。 所以A应该等一段时间, 这段时间就是所谓的TIME_WAIT, 比如, 等待一个RTT的时间(实际上, 考虑到如下的理由之二就知道, RTT可能不够, 用2MSL更靠谱)。TIME_WAIT存在的理由之一是尽可能护送最后的ACK达到对端。
-
- 假设tcp连接是: A(1.2.3.4:8888)------B(6.7.8.9:9999), 这就是一个tcp四元组。 当tcp连接关闭后, 四元组释放。 后面的新连接可能会重用到这个四元组(有这个可能性)。所以, 可以考虑这样一个机制: 让旧四元组对应的所有网络包都消失后(等一段时间), 才允许新四元组建立, 颇有点锁的味道。 TIME_WAIT存在的理由之二是新旧四元组互不干扰。
tcp和udp的区别,tcp是怎么做错误处理的?
其它部分
海量数据处理
怎么实现多服务器负载均衡
数据库的引擎以及区别
数据库事务的特性、4个隔离级别
C++语言及语法部分
面向对象的特性,对于多态的理解。
动态链接库的加载机制
单继承中虚函数是怎么实现的?
重载和多态有什么区别?
C++11的一些特性,C++14呢,C++17呢?lamdba匿名函数了解吗?为什么要有lamdba匿名函数?有什么好处呢?
多重继承为什么会含有多个虚表指针而不是一个?