1.1.2 语言的相关基础知识
字节跳动的技术栈是Go和Python,会问一下相关语言的基础。
1.问题1: 描述线程、进程以及协程的区别?
描述线程、进程以及协程的定义和区别,顺便描述Python语言中三者的使用。
2.问题2: GO语言中的协程与Python中的协程的区别?
主要讲解Go中GMP机制。
1.1.3 网络编程相关基础
1.问题1: 网络IO模型有哪些?
5种网络I/O模型,阻塞、非阻塞、I/O多路复用、信号驱动IO、异步I/O。从数据从I/O设备到内核态,内核态到进程用户态分别描述这5种的区别。
2.问题2: I/O多路复用中select/poll/epoll的区别?
从select的机制,以及select的三个缺点,讲解epoll机制,以及epoll是如何解决select的三个缺点的。还会讲到epoll中水平触发和边沿触发的区别。
1.1.4 HTTP相关基础
1.问题1: 客户端访问url到服务器,整个过程会经历哪些?
从七层网络模型,HTTP->TCP->IP->链路整个过程讲解报文的产生以及传递的过程
2.问题2: 描述HTTPS和HTTP的区别
从端口的区别,以及HTTPS是在SSL的基础上以及加密等方面说明
3.问题3: HTTP协议的请求报文和响应报文格式
要非常清楚请求报文和响应报文的组成部分,要求在写具体案例。
4.问题4: HTTP的状态码有哪些?
从2xx,3xx,4xx,5xx分别举例出常见的code,面试官会问301和302的区别,以及500/503/504分