开源软件名称:xiaobaiTech/golangFamily
开源软件地址:https://github.com/xiaobaiTech/golangFamily
开源编程语言:
Go
100.0%
开源软件介绍:golangFamily
【超全golang面试题合集+golang学习指南+golang知识图谱+成长路线】 一份涵盖大部分golang程序员所需要掌握的核心知识。
脑图持续不断更新中,在线查看地址
后续文章和内容会不断更新到 github项目 中,欢迎关注。
大家好,我是小白。大家知道,我一直以来都是golang的忠实粉丝,在学习和参与面试的过程中遇到过很多golang的问题。
最近花了些时间整理了一下后端程序员成长路线和高频面试题,这是一份涵盖大部分后端程序员所需要掌握的核心知识。
这些面试题从能力模型上对标字节资深后端开发,因为字节主要使用GO语言,因此语言方面的面试题,主要是面向go相关的题目。但除了语言这块,其他中间件和工程能力相关的面试题,对于所有后端开发都适用!!
面试题集PDF还会不断迭代更新,后续最新版本都会在我的个人公众号「小白debug」里第一时间发布!
在公众号里回复【面试】即可获得!!
如果大家看完电子书,觉得内容还不错,强烈希望大家能在微信公众号里搜索关注,并星标我的公众号,第一时间获取最新更新内容!
还有技术划水【交流群】,点击公众号右下角【联系我】或扫描以下二维码,备注“进群”,欢迎大家进群交流~。
如果大家对网络基础感兴趣的话,公众号里也有非常多相关的文章,也欢迎关注收看哈。图解网络相关的文章,已经重新整理成一份的电子书。在公众号内回复【网络】,就可以获得整理的PDF电子书。
同时我也为公众号粉丝准备了一些学习资料,关注公众号并回复【go】、【操作系统】、【网络】即可获得相应学习资料!
并且,学习资料也会不断更新,后续会根据读者需求整理更多相关资源,有需要的读者也可以在公众号内留言。
最后
- 欢迎大家访问我的博客 https://xiaobaidebug.top/ 。
- 在公众号内回复【面试】,可以获得整理的golang面试PDF电子书,适合快速备战面试查漏补缺。
- 在公众号内回复【网络】,可以获得整理的图解PDF电子书,适合巩固基础。
- 在公众号内回复【视频】,可以获得整理的视频教程,内含实战教程,适合小白上路。
目录(善用Ctrl+F)
-
基础入门
-
进阶
-
图解网络基础
- 漫画图解HTTP知识点+面试题
- TCP粘包 数据包:我只是犯了每个数据包都会犯的错
- 30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?
- 既然IP层会分片,为什么TCP层也还要分段?
- 断网了,还能ping通 127.0.0.1 吗?为什么?
- 连接一个 IP 不存在的主机时,握手过程是怎样的?
- 动图图解!代码执行send成功后,数据就发出去了吗?
- 活久见!TCP两次挥手,你见过吗?那四次握手呢?
- 动图图解!收到RST,就一定会断开TCP连接吗?
- 动图图解!没有accept,能建立TCP连接吗?
- 来了来了!小白图解网络电子书和博客都来啦!
- HTTP 是无状态的吗?需要保持状态的场景应该怎么做?
- 粘包如何解决
- RestFul 是什么?RestFul 请求的 URL 有什么特点?
- 一次url访问会经历哪些过程
- TCP 三次握手以及四次挥手的流程。为什么需要三次握手以及四次挥手?
- TCP的拥塞控制具体是怎么实现的?UDP有拥塞控制吗?
- 是否了解中间人劫持原理
- TCP 与 UDP 在网络协议中的哪一层,他们之间有什么区别?
- HTTP 与 HTTPS 有哪些区别?
- select和epoll区别
- TCP 如何实现数据有序性?
- TCP长连接和短连接有那么不同的使用场景?
- TIME_WAIT时长,为什么?
- 什么是零拷贝?
- HTTP 简述 HTTP 的 keepalive 的原理和使用场景
- Cookie 和 Session 的关系和区别是什么?
- DNS 查询服务器的基本流程是什么?DNS 劫持是什么?
- libevent结构,内部实现
- 简述对称与非对称加密的概念
- epoll中的ET和LT模式
- JWT 的原理和校验机制
- TCP 怎么保证可靠传输?
- 介绍下proactor和reactor
- Accept发生在三次握手哪个阶段
- RPC 的调用过程
- tcp的可靠性体现在哪里
- 如何解决 TCP 传输丢包问题?
- 什么是 ARP 协议?简述其使用场景
- http和https区别
- DDOS 攻击原理,如何防范它?
- 如何防止传输内容被篡改?
- 介绍下滑动窗口
- 三次握手四次握手详细过程,越详细越好
- 什么是中间人攻击?如何防止攻击?
- TCP 半连接发生场景
- reactor的组成
- udp包长度
- IP为什么要分片
- OSI 七层模型,TCP,IP 属于哪一层?
- 数据包乱序会处理?
- 什么是 SYN flood,如何防止这类攻击?
- WebSocket 是如何进行传输的
- 为什么需要序列化?有什么序列化的方式?
- 有chunked的时候contentlength是什么样子
- 如何设计一个可靠的udp
- TCP 中常见的拥塞控制算法有哪些?
- 如何设置非阻塞
- 什么是跨域,什么情况下会发生跨域请求?
- Udp的接收缓冲区和发送缓冲区和tcp的区别
- 什么时候需要TCP四次挥手?
- traceroute 有什么作用?
- HTTP 的方法有哪些?
- TIME_WAIT危害
- select什么情况返回0
- 半连接在哪个阶段
- TCP 的 keepalive 了解吗?说一说它和 HTTP 的 keepalive 的区别?
- 简述常见的 HTTP 状态码的含义(30从系统层面上,UDP 如何保证尽量可靠?
- 指针与引用的区别
- iPv4 和 iPv6 的区别
- 项目中说用到线程池,开多大,为什么运用线程池?
- 如何设计 API 接口使其实现幂等性?
- TCP 的 TIME_WAIT 和 CLOSE_WAIT
- HTTP 报文头部的组成结构
- RestFul 与 RPC 的区别是什么?RestFul 的优点在哪里?
- 从输入 URL 到展现页面的全过程
- 什么是 TCP 粘包和拆包?
- HTTP 中 GET 和 POST 区别
- 讲一下拥塞控制和流量控制
- TCP 协议的延迟 ACK 和累计应答
- TCP 挥手时出现大量 CLOSE_WAIT 或 TIME_WAIT 怎么解决?
- ARP协议工作流程
- tcp与udp的区别以及应用场景
- HTTPS 的加密与认证过程
- TCP 中 SYN 攻击是什么?如何防止?
- HTTP 短链接与长链接的区别
- TCP 的报文头部结构
- http长连接与短连接的区别
- TCP 滑动窗口以及重传机制
- seq为1000,发送了1000个数据,下一个seq是多少?
- chunked块了解?介绍下
- BGP 协议和 OSPF 协议的区别
- 简述在四层和七层网络协议中负载均衡的原理
- http协议格式,几种方法,功能是什么
- syn如果丢了,重传多少次
- epoll可读情况有哪些
-
操作系统
- 创建线程有多少种方式?
- 如何调试服务器内存占用过高的问题?
- 简述操作系统如何进行内存管理
- 简述创建进程的流程
- 简述操作系统中 malloc 的实现原理
- 简述僵尸进程和孤儿进程及其危害和处理
- 两个线程交替打印一个共享变量
- 进程通信中的管道实现原理是什么?
- 简述同步与异步的区别,阻塞与非阻塞的区别
- malloc 创建的对象在堆还是栈中?
- 死锁产生的条件、死锁避免方法
- 进程的三状态模型、五状态模型、七状态模型
- 什么情况下,进程会进行切换?
- Linux 系统态与用户态,什么时候会进入系统态?
- Linux 下如何查看端口被哪个进程占用?
- 共享内存是如何实现的?
- 进程有多少种状态?
- 线程间有哪些通信方式?
- Linux 下如何排查 CPU 以及 内存占用过多?
- 操作系统中,虚拟地址与物理地址之间如何映射?
- CPU L1, L2缓存是什么
- 信号量是如何实现的?
- 什么时候会由用户态陷入内核态?
- Linux 如何查看实时的滚动日志?
- Linux 进程调度的算法
- 简述分页与分段,分页与分段的区别
- Linux 虚拟内存的页面置换算法
- Linux 中虚拟内存和物理内存有什么区别?有什么优点?
- traceroute 命令的原理
- 操作系统是通过什么机制触发系统调用的?
- Linux 零拷贝的原理
- 系统调用的过程是怎样的?
- Linux 的 IO模型有哪些
- 简述自旋锁与互斥锁的使用场景
- 多线程和多进程的区别是什么?
- 简述几个常用的 Linux 命令以及他们的功能
- 进程空间从高位到低位都有些什么?
- 简述缓冲区溢出及其危害
- mmap 的使用场景以及原理
- BIO、NIO 有什么区别?怎么判断写文件时 Buffer 已经写满?
- 线程有多少种状态,状态之间如何转换
- 简述操作系统中的缺页中断
- Linux 下如何查看 CPU 荷载,正在运行的进程,某个端口对应的进程?
- 进程和线程之间有什么区别?
- 进程间有哪些通信方式?
- 为什么进程切换慢,线程切换快?
- 线程从进程继承了哪些资源?线程独享哪些资源?
- Linux 页大小是多少?
- select, poll, epoll 的使用场景以及区别,epoll 中水平触发以及边缘触发有什么不同?
-
数据库
- 数据库三大范式是什么
- mysql有关权限的表都有哪几个
- MySQL的binlog有有几种录入格式?分别有什么区别?
- mysql有哪些数据类型
- MySQL存储引擎MyISAM与InnoDB区别
- MyISAM索引与InnoDB索引的区别?
- InnoDB引擎的4大特性
- 存储引擎选择
- 什么是索引?
- 索引有哪些优缺点?
- 索引使用场景(重点)
- 索引有哪几种类型?
- 索引的数据结构(b树,hash)
- 索引的基本原理
- 索引算法有哪些?
- 索引设计的原则?
- 创建索引的原则
- 创建索引的三种方式,删除索引
- 创建索引时需要注意什么?
- 使用索引查询一定能提高查询的性能吗?为什么
- 百万级别或以上的数据如何删除
- 前缀索引
- 什么是最左前缀原则?什么是最左匹配原则
- B树和B+树的区别
- 使用B树的好处
- 使用B+树的好处
- Hash索引和B+树所有有什么区别或者说优劣呢?
- 数据库为什么使用B+树而不是B树
- B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,
- 什么是聚簇索引?何时使用聚簇索引与非聚簇索引
- 非聚簇索引一定会回表查询吗?
- 联合索引是什么?为什么需要注意联合索引中的顺序?
- 什么是数据库事务?
- 事物的四大特性(ACID)介绍一下?
- 什么是脏读?幻读?不可重复读?
- 什么是事务的隔离级别?MySQL的默认隔离级别是什么?
- 对MySQL的锁了解吗
- 隔离级别与锁的关系
- 按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法
- 从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了
- MySQL中InnoDB引擎的行锁是怎么实现的?
- InnoDB存储引擎的锁的算法有三种
- 什么是死锁?怎么解决?
- 数据库的乐观锁和悲观锁是什么?怎么实现的?
- 为什么要使用视图?什么是视图?
- 视图有哪些特点?
- 视图的使用场景有哪些?
- 视图的优点
- 视图的缺点
- 什么是游标?
- 存储过程与函数
- 什么是存储过程?有哪些优缺点?
- 什么是触发器?触发器的使用场景有哪些?
- MySQL中都有哪些触发器?
- 常用SQL语句
- SQL语句主要分为哪几类
- 超键、候选键、主键、外键分别是什么?
- SQL 约束有哪几种?
- 六种关联查询
- 什么是子查询
- 子查询的三种情况
- mysql中 in 和 exists 区别
- varchar与char的区别
- varchar(50)中50的涵义
- int(20)中20的涵义
- mysql为什么这么设计
- mysql中int(10)和char(10)以及varchar(10)的区别
- FLOAT和DOUBLE的区别是什么?
- drop、delete与truncate的区别
- UNION与UNION ALL的区别?
- 如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?
- SQL的生命周期?
- 大表数据查询,怎么优化
- 超大分页怎么处理?
- mysql 分页怎么实现
- 慢查询日志怎么看
- 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
- 为什么要尽量设定一个主键?
- 主键使用自增ID还是UUID?
- 字段为什么要求定义为not null?
- 如果要存储用户的密码散列,应该使用什么字段进行存储?
- 优化查询过程中的数据访问
- 优化长难的查询语句
- 优化特定类型的查询语句
- 优化关联查询
- 优化子查询
- 优化LIMIT分页
- 优化UNION查询
- 优化WHERE子句
- 数据库优化
- 为什么要优化
- 数据库结构优化
- MySQL数据库cpu飙升到500%的话他怎么处理?
- 大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?
- 垂直分表适用场景
- 水平分表适用场景
- 水平切分的缺点
- MySQL的复制原理以及流程
- 读写分离有哪些解决方案?
- 备份计划,mysqldump以及xtranbackup的实现原理
- 数据表损坏的修复方式有哪些?
-
骚话连篇
-
包
- 常用包
常用包 |
说明 |
fmt |
实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。 |
io |
实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们在进行流式读写(比如读写文件)时,通常会用到该包。 |
bufio |
它在io的基础上提供了缓存功能。在具备了缓存功能后, bufio可以比较方便地提供ReadLine之类的操作。 |
strconv |
提供字符串与基本数据类型互转的能力。 |
os |
本包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。 |
sync |
它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。 |
flag |
它提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。 |
encoding/json |
JSON目前广泛用做网络程序中的通信格式。本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。 |
http |
通过http包,只需要数行代码,即可实现一个爬虫或者一个Web服务器,这在传统语言中是无法想象的。 |
2. 常用第三方包
3. 必看项目
4. 完整标准库列表
包 |
子包 |
说明 |
bufio |
bytes |
提供了对字节切片操作的函数 |
|
crypto |
收集了常见的加密常数 |
|
errors |
实现了操作错误的函数 |
|
Expvar |
为公共变量提供了一个标准的接口,如服务器中的运算计数器 |
|
flag |
实现了命令行标记解析 |
|
fmt |
实现了格式化输入输出 |
|
hash |
提供了哈希函数接口 |
|
html |
实现了一个HTML5兼容的分词器和解析器 |
|
image |
实现了一个基本的二维图像库 |
|
io |
提供了对I/O原语的基本接口 |
|
log |
它是一个简单的记录包,提供最基本的日志功能 |
|
math |
提供了一些基本的常量和数学函数 |
|
mine |
实现了部分的MIME规范 |
|
net |
提供了一个对UNIX网络套接字的可移植接口,包括TCP/IP、 UDP域名解析和UNIX域套接字 |
|
os |
为操作系统功能实现了一个平台无关的接口 |
|
path |
实现了对斜线分割的文件名路径的操作 |
|
reflect |
实现了运行时反射,允许一个程序以任意类型操作对象 |
|
regexp |
实现了一个简单的正则表达式库 |
|
runtime |
包含与Go运行时系统交互的操作,如控制goroutine的函数 |
|
sort |
提供对集合排序的基础函数集 |
|
strconv |
实现了在基本数据类型和字符串之间的转换 |
|
strings |
实现了操作字符串的简单函数 |
|
sync |
提供了基本的同步机制,如互斥锁 |
|
syscall |
包含一个低级的操作系统原语的接口 |
|
testing |
提供对自动测试Go包的支持 |
|
time |
提供测量和显示时间的功能 |
|
unicode |
Unicode编码相关的基础函数 |
archive |
tar |
实现对tar压缩文档的访问 |
|
zip |
提供对ZIP压缩文档的读和写支持 |
compress |
bzip2 |
实现了bzip2解压缩 |
|
flate |
实现了RFC 1951中所定义的DEFLATE压缩数据格式 |
|
gzip |
实现了RFC 1951中所定义的gzip格式压缩文件的读和写 |
|
lzw |
实现了 Lempel-Ziv-Welch编码格式的压缩的数据格式 |
|
zlib |
实现了RFC 1950中所定义的zlib格式压缩数据的读和写 |
container |
heap |
提供了实现heap.Interface接口的任何类型的堆操作 |
|
lsit |
实现了一个双链表 |
|
ring |
实现了对循环链表的操作 |
crypto |
aes |
实现了AES加密(以前的Rijndael) |
|
cipher |
实现了标准的密码块模式,该模式可包装进低级的块加密实现中 |
|
des |
实现了数据加密标准( Data Encryption Standard,DES)和三重数据加密算法( TripleData Encryption Algorithm, TDEA) |
|
dsa |
实现了FIPS 186-3所定义的数据签名算法( Digital Signature Algorithm) |
|
ecdsa |
实现了FIPS 186-3所定义的椭圆曲线数据签名算法( Elliptic Curve Digital SignatureAlgorithm) |
|
elliptic |
实现了素数域上几个标准的椭圆曲线 |
|
hmac |
实现了键控哈希消息身份验证码( Keyed-Hash Message Authentication Code,HMAC) |
|
md5 |
实现了RFC 1321中所定义的MD5哈希算法 |
|
rand |
实现了一个加密安全的伪随机数生成器 |
|
rc4 |
实现了RC4加密,其定义见Bruce Schneier的应用密码学( Applied Cryptography) |
|
rsa |
实现了PKCS#1中所定义的RSA加密 |
|
sha1 |
实现了RFC 3174中所定义的SHA1哈希算法 |
|
sha256 |
实现了FIPS 180-2中所定义的SHA224和SHA256哈希算法 |
|
sha512 |
实现了FIPS 180-2中所定义的SHA384和SHA512哈希算法 |
|
subtle |
实现了一些有用的加密函数,但需要仔细考虑以便正确应用它们 |
|
tls |
部分实现了RFC 4346所定义的TLS 1.1协议 |
|
x509 |
可解析X.509编码的键值和证书 |
|
x509/pkix |
包含用于对X.509证书、 CRL和OCSP的ASN.1解析和序列化的共享的、低级的结构 |
database |
sql |
围绕SQL提供了一个通用的接口 |
|
sql/driver |
定义了数据库驱动所需实现的接口,同sql包的使用方式 |
debug |
dwarf |
提供了对从可执行文件加载的DWARF调试信息的访问,这个包对于实现Go语言的调试器非常有价值 |
|
elf |
实现了对ELF对象文件的访问。 ELF是一种常见的二进制可执行文件和共享库的文件格式。 Linux采用了ELF格式 |
|
gosym |
访问Go语言二进制程序中的调试信息。对于可视化调试很有价值 |
|
macho |
实现了对Mach-O对象文件的访问 |
|
pe |
实现了对PE( Microsoft Windows Portable Executable)文件的访问 |
encoding |
ascii85 |
实现了ascii85数据编码,用于btoa工具和Adobe’s PostScript以及PDF文档格式 |
|
asn1 |
实现了解析DER编码的ASN.1数据结构,其定义见ITU-T Rec X.690 |
|
base32 |
实现了RFC 4648中所定义的base32编码 |
|
base64 |
实现了RFC 4648中所定义的base64编码 |
|
binary |
实现了在无符号整数值和字节串之间的转化,以及对固定尺寸值的读和写 |
|
csv |
可读和写由逗号分割的数值( csv)文件 |
|
gob |
管理gob流——在编码器(发送者)和解码器(接收者)之间进行二进制值交换 |
|
hex |
实现了十六进制的编码和解码 |
|
json |
实现了定义于RFC 4627中的JSON对象的编码和解码 |
|
pem |
实现了PEM( Privacy Enhanced Mail)数据编码 |
|
xml |
实现了一个简单的可理解XML名字空间的XML 1.0解析器 |
go |
ast |
声明了用于展示Go包中的语法树类型 |
|
build |
提供了构建Go包的工具 |
|
doc |
从一个Go AST(抽象语法树)中提取源代码文档 |
|
parser |
实现了一个Go源文件解析器 |
|
printer |
实现了对AST(抽象语法树)的打印 |
|
scanner |
实现了一个Go源代码文本的扫描器 |
|
token |
定义了代表Go编程语言中词法标记以及基本操作标记( printing、 predicates)的常量 |
hash |
adler32 |
实现了Adler-32校验和 |
|
crc32 |
实现了32位的循环冗余校验或CRC-32校验和 |
|
crc64 |
实现了64位的循环冗余校验或CRC-64校验和 |
|
fnv |
-
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:18026|2023-10-27
-
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9593|2022-11-06
-
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8141|2022-11-06
-
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8522|2022-11-06
-
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8425|2022-11-06
-
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9330|2022-11-06
-
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8389|2022-11-06
-
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7823|2022-11-06
-
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8379|2022-11-06
-
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7370|2022-11-06
| |
请发表评论