腾讯二面准备

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怎么解决?

    1. A不能保证最后的ACK能达到B, 所以, 还应该观望一段时间, 护送一段时间。 如果最后的ACK丢失, 那么B显然收不到, B于是发起了重传FIN的操作, 此时如果A处于CLOSED的状态, 就没办法给对端发ACK了(实际是发RST), 呜呼哀哉。 所以A应该等一段时间, 这段时间就是所谓的TIME_WAIT, 比如, 等待一个RTT的时间(实际上, 考虑到如下的理由之二就知道, RTT可能不够, 用2MSL更靠谱)。TIME_WAIT存在的理由之一是尽可能护送最后的ACK达到对端。
    1. 假设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匿名函数?有什么好处呢?

多重继承为什么会含有多个虚表指针而不是一个?