注:本文内容源自polaris
在知识星球Go项目实战中的直播,已获得本人许可。
第一站:穿梭于Internet
第二站:协议
重点掌握
- TCP/UDP
- HTTP
常考面试题
- TCP的三次握手过程
- TCP的四次挥手过程
推荐书籍
- 《图解http协议》
- 《图解TCP协议》
建议用wireshark
抓包软件进行分析。
第三站:Unix/Linux操作系统
掌握对Unix/Linux
操作系统的常用操作指令操作,例如
shell
脚本vim
编辑器的使用sed
awk
多练习,多总结
网络编程方面需掌握
- Socket、Unix Domain Socket
- 进程间通讯
推荐书籍
- 《UNIX网络编程卷一:套接字》
- 《UNIX环境高级编程》
- 《Linux/Unix设计思想》
第四站:Nginx、Apache、Caddy、等Web Server和核心功能
介绍
Web Server核心功能
- HTTP解析
- HTTPS支持
- 虚拟主机(一个端口,多个域名)
- 静态资源
- URL重写
- gzip压缩
- 作为反向代理,和其他进程常用通讯协议的支持
推荐学习了解下Caddy
第五站:常用的支持Web开发的语言
- PHP(LAMP、LNMP)
- Java
- Python
- Ruby
- Go
- C#(.NET)
另外常用的数据结构和算法要有了解
第六站:数据库
- 关系数据库:SQLite,MySQL,Postgresql,SQL Server,Oracle
- NoSQL:Redis,Mongodb,Cassandra,HBase
- 缓存:Redis,Memcached
- 其他:Go BoltDB,dgraph,CockroachDB
入门数据库推荐使用MySQL
推荐书籍
- 《高性能MySQL》
- 《MySQL技术内幕InnoDB引擎》
- 《Redis实战》
第七站:架构
- 高可用,高性能,可扩展
- 分布式,CAP理论
- 分布式消息队列:Redis,ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等
- 常用的应用场景:异步处理,应用解耦,流量削峰和消息通讯
- 微服务
写在最后
直播后有个答疑环节,我将此次答疑的收货整理如下:
关于服务端面试
面试考语言的分量比较小,因为服务端涉及的面比较广,需要学习的东西很多,有时候原理比语言更重要。
关于承压
在项目研发过程中,无论是测试还是上线跑,服务端会经常背锅,所以在压力上要及时调整好心态,做好和其他岗位人员的及时有效沟通。
关于未来发展
努力去大公司,做一些大项目,最好流量是千万级别以上的。
学无止境,一起努力!