hi ,大家好!一般来说,如果想跳槽,年后是比较适合的,对于校招来说,今年的春招和秋招马上就要来了,为了自己的职业发展,大家要把握好一切可以把握的机会:

本文内容来自‍‍‍‍‍:极客星球(首发)(基本功的pdf资料都在极客星球,强烈推荐)

扎实的基本功才是通向成功的必经之路,要想在技术方向有所成就(不害怕危机),即使是工作多年的老司机,也需要不断加强自己的基本功修炼,  这样才能快速适应新的技术发展,才能顺势而为

核心原则:

  • 深入理解基础概念

  • 深入理解基本原理

  • 动手实践验证,加深概念理解,增强编程能力

C/C++

核心知识

指针、引用、数组、内存

引用与指针区别

C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别

虚机制:虚函数、虚函数表、纯虚函数

继承、多态, 重写、重载

智能指针原理:引用计数、RAII思想

智能指针使用:shared_ptr、weak_ptr、unique_ptr等

关键字的作用:static、const、volatile、extern

四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast

STL部分容器的实现原理,如 vector、deque、map、set、 hashmap

泛型编程:模板(了解一下)

内存模型:编译链接机制、内存布局(memory layout)、对象模型

modem C++ 11/14/17/20 部分新特性:右值引用、完美转发,lambda,新智能指针,内存模型,多线程,  function和bind,module,Coroutines,Concepts ,Concurrency等

推荐文章

https://t.zsxq.com/Iub6AYr

https://mp.weixin.qq.com/s/GeRApRsRw3YooLde1WqJYQ

https://mp.weixin.qq.com/s/7N0n8rhvgFqWN28Jy85Z7Q

https://mp.weixin.qq.com/s/sYoKoCul2UoYIG9mXuK0-A

推荐书籍

《C++primer》

《C++对象模型》

《STL标准库》

《深入剖析STL》

《modem C++》

《effective C++》

《effective Modem C++》

Go

核心知识:

切片(Slice)

多核并发编程Channel和goroutine

垃圾回收机GC原理

Struct与interface类型

defer关键字

环境变量与包管理

go原生数据结构Container

内存模型

栈和指针

逃逸机制

推荐文章(里面有推荐的书籍)

https://t.zsxq.com/UJQrFYn

https://mp.weixin.qq.com/s/UJphQx_FLLyQ1OZcE2E_VQ

https://mp.weixin.qq.com/s/pT3CXfPw0WaK7dRqp-Wxuw

推荐书籍

《Go语言圣经》

《go语言底层原理剖析》

《Go语言的设计与实践》

Java

核心知识:

Java基础知识:基本类型,关键字理解,各种引用等

Java编程思想:面向对象,异常分类及处理, 反射, 注解,泛型。

Java容器原理:HashSet,HashMap ,TreeMap等

Java 多线程和并发,Java IO编程

Java底层原理:JVM原理,字节码,JIT技术,GC原理等

推荐文章(里面有推荐资料)

https://t.zsxq.com/mq3RjEu

https://mp.weixin.qq.com/s/pT3CXfPw0WaK7dRqp-Wxuw

https://mp.weixin.qq.com/s/c22-M_XfTF1w2SBdf6t4Wg

书籍推荐:

《Java编程思想》 《Java核心技术卷一》 《深入理解JVM虚拟机》 《Java并发编程实战》 《Java并发编程艺术》 《Effective Java》 《Java性能调优指南》 《深入JavaWeb技术内幕》 《How Tomcat Works》 《Spring实战》

编程语言大实验自己写DSL解释器

  • 具体功能不限

  • 参考XML,JSON,Protobuf等

DSL——Domain specific language,DSL在规则引擎中有广泛的应用,但其实不单单是规则引擎,很多地方都有DSL的身影。比如最简单的JSON,SQL,properties配置文件,yml配置文件,thrift、protobuf、avro的IDL,dockerfile等等,这些都是DSL。DSL的存在可以大大降低系统的复杂性,当然前提是DSL并不复杂。DSL绝对不能等同于编程语言,但要求近似等同于人类语言。

数据结构与算法

核心知识

数据结构:

O(n)结构:list/栈/队列

O(1)结构:数组/hash/位图

O(logn)树形结构:二叉树/AVL/红黑树/B+树/skip list

算法:

排序算法

字符串匹配算法

遍历和剪枝

二分法

分治算法

贪心算法/动态规划

图论

推荐文章

https://mp.weixin.qq.com/s/xI4Ew_Kzzy1MrfGTaBWdAQ

动图演示算法(经典):

https://visualgo.net/zh

https://algorithm-visualizer.org/

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

推荐书籍

《数据结构与算法之美》

实验:

  • bugfree实现上面核心数据结构和算法并写测试case去验证各种情况

  • 刷题

    剑指offer:https://www.nowcoder.com/ta/coding-interviews

    leetcode:https://leetcode-cn.com/problemset/algorithms/

    leetcode经典题解pdf(c++,go, python, java):

    链接: https://pan.baidu.com/s/1F8k9prIrH4PJSJeL6P4a7w 提取码: kemw

计算机组成原理

核心知识点:

冯·诺伊曼体系

CPU原理:

指令系统,计算机的控制器

寄存器组成,计算机指令执行的过程

CPU的流水线设计,SIMD,向量指令,分支预测,cache

编码,汇编原理

多核,超线程,NUMA

存储器原理:

层次化存储,cache,局部性原理,内存,总线

半导体存储器(内存、U盘、固态硬盘)、磁存储器(磁带、磁盘)

内存RAM(随机读取,与位置无关)、串行存储器(按顺序查找,与位置有关)、只读存储器ROM(只读不写)

高速缓存的替换策略:随机算法、先进先出算法(FIFO)、最不经常使用算法(LFU)、最近最少使用算法(LRU)。

I/O设备原理:

计算机的总线, DMA ,IO地址

设备: 键盘,鼠标,显示器

高速缓存与缓冲区

网卡原理:

数电信号转化,纠错码,以太网。

推荐书籍

《计算机是怎么样跑起来》

《程序是怎么跑起来的》

《深入理解计算机系统》

推荐文章:

https://mp.weixin.qq.com/s/S9rUTkKKdQARLhbfosClAw

https://mp.weixin.qq.com/s/p2LzJ2eo3z_0pnriXZNhIQ

在线学习网站:

https://fengmuzi2003.gitbook.io/csapp3e/

实验:

完成深入理解计算机系统里面lib:

  • I Data Lab - 位操作,数据表示

  • II Bomb Lab - 汇编,栈帧与 gdb

  • III Attack Lab - 漏洞是如何被攻击的

  • IV Cache Lab - 实现一个缓存系统来加速计算

  • V Shell Lab - 实现一个 shell

  • VI Malloc Lab - 实现一个动态内存分配

  • VII Proxy Lab - 实现一个多线程带缓存的代理服务器

推荐课程

极客时间:深入浅出计算机组成原理

操作系统

核心知识点:

CPU管理(调度子系统):进程,线程,多进程,多线程,进程间通信,并发和锁。

内存管理(内存子系统):物理内存管理,虚拟内存管理,内存分配框架(用户态内存池,glibc,内核)

磁盘管理(IO子系统  ):文件系统,buffer和cache,块存储,零拷贝,DMA

网络管理(网络子系统):协议栈,socket API,网卡,DMA,中断系统

推荐文章

https://mp.weixin.qq.com/s/Ghu-0Qc9PyEHHmIaRVtMyA

https://mp.weixin.qq.com/s/JgBIivE2UutJM8-rAdaN5A

https://mp.weixin.qq.com/s/biuw4zAmmjbESRw9SRmXww

https://mp.weixin.qq.com/s/zm4WlQuUxFE62CR59zbayQ

https://mp.weixin.qq.com/s/kM7hjfRLRRJhy05N-rpwkA

https://mp.weixin.qq.com/s/rYrOl4F2drkrGKwF233_cg

https://mp.weixin.qq.com/s/Sbr9I-pN0v6T-JuZspuF7g

https://mp.weixin.qq.com/s/D2_4YK0eguYGq7u_1dnJ1g

推荐书籍

《操作系统导论》:  英文版《Operating Systems:Three Easy Pieces》(能看懂英文的,优先看英文版)

《现代操作系统-原理与实现》

《操作系统—精髓与设计原理》

《深入理解计算机系统》

推荐课程

极客时间-趣谈操作系统

极客时间-操作系统45讲(实战+时间)

视频课程

B站:《操作系统 - 清华大学》

实验项目:自己实现一个容器

参考LXC(Linux容器,Linux Container),docker,kata等

网络

核心知识点:

网络协议:

1 重点协议(理解),TCP ,UDP,QUIC, HTTP/HTTPS/HTTP2.0

2 其他协议(了解),IP、ICMP、DNS、ARP

实验:实现UDP的可靠传输

参考TCP和QUIC

网络编程:

进程间通信方式:信号量、管道、共享内存、socket 等

多线程编程:互斥锁、条件变量、读写锁、线程池等

 IO 模型:

1. 阻塞 IO(BIO)

2. 非阻塞 IO(NIO)

3. IO 多路复用第一版(select/poll)

4. IO 多路复用第二版(epoll)

5. 异步 IO(AIO)

高性能 IO 两种模式:Reactor(epoll) 和 Proactor(io_ring, windows-IOCP)

IO 复用机制:epoll、select、poll

实验:实现一个高性能高并发服务器

参考主流网络框架

netty(Java)

gnet(Go)

libevent(C)

boost::asio(c++)

muduo(Linux only)

网络通信(非网络方向了解,网络方向要精通):

网络分层模型,IP交互和转发,交换机,路由器,接入网,互联网,核心网,传输网

实验:

tcpdump 和 wireshark 抓包分析。

思科的网络模拟软件 Packet Tracer。

scapy 组包测试(自己组包)

推荐文章

https://mp.weixin.qq.com/s/0XXNDid8lXDbcSZ9fmWOZg

https://mp.weixin.qq.com/s/tn0QRVCeXP_oaOu4dECmew

https://mp.weixin.qq.com/s/23DOHWf-nkqhZO7NhW4ARQ

https://mp.weixin.qq.com/s/6GTQGqBqi5rXRyIb_M0MUg

https://mp.weixin.qq.com/s/Wk3BjT_ZYphqw1Ror33ZYg

推荐书籍:

《网络是怎么连接的》

《图解HTTP》

《计算机网络:自顶向下方法》

《Unix网络编程》

《Linux高性能服务器编程》

《Wireshark 网络分析就这么简单》

推荐课程

极客时间:趣谈网络协议

数据库

核心知识

应用层: 给客户端提供连接数据库的工具。

会话层: 处理客户端与服务器的session信息,并检测是否有访问数据库的权限相关的权限动作。

计划层: 解析SQL字符串和逻辑计划的生成。

计算层: 把逻辑计划转成物理计划,并计算结果。

数据访问层: 文件和索引、事务的管理。

存储引擎: 外部数据源存储的数据文件。

数据库事务原理

分布式数据库:数据复制,读写分离,分库分表,数据备份恢复,容灾高可用

实验:MySQL

基本语法:select/delete/insert/update、limit、join等

索引:B+树,聚族索引,二级索引,组合索引,最左匹配原则,索引失效、慢查询

事务:事务四大特性ACID,事务隔离级别,MVCC

:全局锁、表级锁、行级锁、快照读、当前读、乐观锁、悲观锁、死锁

日志:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)

架构:读写分离、主从架构、分库分表、数据库和缓存双写一致性

推荐文章

https://mp.weixin.qq.com/s/2H4ohQRUIUjD6vZzm-GoJA

推荐书籍

《SQL必知必会》

《MySQL是怎么运行的》

《MySQL技术内幕》

《高性能 MySQL》

推荐课程

极客时间:MySQL实战45讲

实验实现千万级用户数据库系统

  • 具体功能自己筛选

  • 参考MySQL,SQLite等

缓存(redis)

核心知识

线程模型,网络IO模型

数据结构、AOF和RDB持久化技术

主从复制、哨兵模式、集群模式

缓存核心问题

缓存穿透,缓存穿击

缓存雪崩,缓存污染(满)

缓存和数据库一致性

推荐文章

https://mp.weixin.qq.com/s/6GTQGqBqi5rXRyIb_M0MUg

https://tech.meituan.com/2017/03/17/cache-about.html

https://pdai.tech/md/db/nosql-redis/db-redis-x-cache.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E7%90%86%E8%A7%A3redis%E7%BC%93%E5%AD%98%E9%97%AE%E9%A2%98

推荐书籍

《Redis设计与实现》

推荐课程

极客时间-Redis核心技术与实战

实验项目自己实现简单的缓存系统

  • 具体功能自己筛选

  • 参考memcached,redis,Encache等

消息队列

核心知识

消息队列问题:应用耦合、异步消息、流量削锋

broker,PartitionParition,

producer,consumer

消费确认,消息删除、消息备份

消息投递,消费模式 push、pull

可靠投递,重复消息,顺序消息

I/O Schedule, 顺序存取,Page Cache,零拷贝,读写分离

高性能、高可用、可伸缩和最终一致性

推荐文章

https://mp.weixin.qq.com/s/ZDVcIsqryXzRyFQofMDCgw

https://mp.weixin.qq.com/s/3TlTlV2GHcLjDU1Dosou5g

推荐书籍

《深入理解Kafka:核心设计与实践原理》

《深入解析Apache Pulsar》

实验项目:实现一个简单的消息队列系统

  • 具体功能自己筛选

  • 参加kafka,Puslar等

分布式

核心知识

CAP原理,BASE原理

一致性:Paxos ,raft, Zab (点到为止,理解大框架就行,不要太细节,除非分布式专家)

RPC,zk,etcd,

高可用,容灾,可伸缩

分布式事务

推荐文章

https://mp.weixin.qq.com/s/gbM-S0RsT1w4lV82IKiCQA

https://mp.weixin.qq.com/s/qyL9XzEUNpOfpwQbASKPiQ

推荐书籍

《凤凰架构》

《深入理解分布式事务》

推荐课程

极客时间-分布式技术原理与算法解析

实验项目:实现一套简单分布式系统

  • 服务器可以采用虚拟机或者容器,三台以上

  • 支持消息最终一致性的AP系统,高可用(集群容灾)

  • 支持平滑扩容

  • 支持RPC(可以用现成开源框架)

软件设计

核心知识

软件设计起源(问题背景)

代码设计核心原则:通用设计原则(隔离变化,面向接口编程,组合优于继承),DRY原则,KISS原则,SOLID原则

经典设计模式:创建型模式,结构型模式,行为模式

编程语言的惯用法:RAII,反射,智能指针,消息总线等

编程经典模型:  事件驱动,消息驱动,数据驱动等

编程经典思想:模块化设计,面向对象思想,泛型编程,函数式编程,策略与机制分离思想,分摊思想等

软件架构:分布式架构,SOA架构,微服务架构,云原生架构等

推荐文章

https://mp.weixin.qq.com/s/PQoXXUkUPvKLrxCu-6snfA

https://mp.weixin.qq.com/s/NuF2ynNH78tUtzdj-TzukA

https://mp.weixin.qq.com/s/27XBeQBVu9fqg4tussBIrw

推荐网站

https://refactoring.guru

实验项目:实现一个RPC框架

  • 支持事件驱动,数据驱动

  • 支持模块化设计和面向对象设计

  • 支持分布式系统,微服务架构

  • 代码尽量高内聚,低耦合(包含3个以上的经典设计模式)

最后一个综合大作业

实现一个高性能后台服务器(业务不限)

要求

1 支持百万级用户同时访问

2 单次访问延时小于50ms

3 用户数据需要持久化

4 可以快速拉取用户数据

5 系统SLA-99.99%

跑分网站:

https://www.techempower.com/benchmarks/

推荐文章:

https://mp.weixin.qq.com/s/3tKfiJnn5qKgz-FsBkzrSw

https://mp.weixin.qq.com/s/AuSeyCEbEooZ1yayeNB-Rg

参考:

Nginx:http://nginx.org/

Redis:https://redis.io/

Gnet:https://github.com/panjf2000/gnet

- END -


看完一键三连在看转发点赞

是对文章最大的赞赏,极客重生感谢你

推荐阅读

极客星球

2022新年重磅技术分享|深入理解Linux操作系统

基本功为什么如此重要!

你好,这里是极客重生,我是阿荣,大家都叫我荣哥,从华为->外企->到互联网大厂,目前是大厂资深工程师,多次获得五星员工,多年职场经验,技术扎实,专业后端开发和后台架构设计,热爱底层技术,丰富的实战经验,分享技术的本质原理,希望帮助更多人蜕变重生,拿BAT大厂offer,培养高级工程师能力,成为技术专家,实现高薪梦想,期待你的关注!点击蓝字查看我的成长之路

校招/社招/简历/面试技巧/大厂技术栈分析/后端开发进阶/优秀开源项目/直播分享/技术视野/实战高手等, 极客星球希望成为最有技术价值星球,尽最大努力为星球的同学提供技术和成长帮助!详情查看->极客星球

求点赞,在看,分享三连

大厂后台开发基本功修炼路线和经典资料相关推荐

  1. linux操作系统原理_Linux后台开发C++学习路线技能加点,已拿鹅厂offer

    大家好我是lemon,最近在知乎经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题,围观原文链接: 非常详细的 Linux C/C++ 学习路线总结!助我拿下腾讯offer ...

  2. 小师弟肝了七天七夜,东半球最全「后台开发」学习路线出炉

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 来源:编程指北 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. ...

  3. 云计算学习路线和经典资料推荐

    hi,大家好,最近很多小伙伴叫我出一个云计算学习路线和推荐资料,那必须赶紧安排上.云计算可以说是当前的热门方向,各个大厂都在搞云计算(字节也加入云计算大家庭,以后跳槽有更多选择),尤其是云原生火热,至 ...

  4. c++后台开发适合入坑吗?就业前景如何?

    一.什么是c++后台开发? c++后台开发也可以叫c++后端开发,其实从技术上来说并无不同. c++后台开发就是基于linux环境和C++语言的服务器程序开发,像qq服务器.微信服务器.王者荣耀服务器 ...

  5. C++后台开发学习路线(已多人拿下腾讯后台开发)

    学习建议 对于技术岗位来说,软件基础知识可以说是个人的硬实力,是你通过面试的一大前提.说到基础软件的学习,对于很多没有基础知识的同学来说,可能有点力不从心.这么多软件基础知识,这么多技术书籍,应该从哪 ...

  6. socket技术路线_呐,这不就是你要的C++后台开发学习路线吗?

    校招形势 在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗.不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发. 后 ...

  7. 大数据开发工程师基本功修炼之史上最全Linux学习笔记(建议)

    我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励. 2021年「博客之星」参赛博主:Maynor大数据 (感谢礼品.红包免费送!) https://bbs.csdn.ne ...

  8. 零基础C++后台开发学习路线

    个人介绍: 首先介绍一下自己吧,我是一名非科班硕士,本硕某985,本科对于编程这块的学习很浅显,数据结构都没学过,基本上到了研一才开始认真学习这块知识.这篇文章实际上是我自己入门编程过程的总结,在大学 ...

  9. 多线程编程是后台开发人员的基本功

    这里先给大家分享一个小故事: 在我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(IM,类似于 QQ 聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁的,但是当时为了图代码简便, ...

最新文章

  1. linux python版本_linux下更新Python版本并修改默认版本
  2. Texmaker使用方法、Latex的优缺点
  3. mysql(mariadb)常用命令(持续更新ing)
  4. Openwrt系统初始时间
  5. 域传送漏洞(vulhub)
  6. 《SQL初学者指南(第2版)》——2.4 指定列
  7. HTML(XHTML)基础知识(三)——【image】
  8. js,vue.js一些方法的总结
  9. 即时通讯安全问题大曝光
  10. win10设置HTML桌面背景,win10系统怎么更换桌面壁纸?windows10更换桌面壁纸的方法...
  11. 麒麟linux怎么安装软件,中标麒麟Linux操作系统怎么安装软件?
  12. python 期货策略_Python版商品期货跨期布林对冲策略.md
  13. 申请Apple ID--通过苹果官网申请
  14. 简单学习一下ibd数据文件解析
  15. 个人先进事迹如何写--注意三个关键词的把握
  16. 校园网连接后,浏览器打不开登录界面可能的一种解决方法
  17. phpini修改时间无效_php配置文件改变为什么没有生效?
  18. RENIX_802.3ah功能介绍(下)——网络测试仪实操
  19. 用科技赋能教育创新与重构 华为将教育信息化落到实处
  20. DNS的域名的解析解决办法(openDNS)

热门文章

  1. 基于最小均方误差短时谱估计的语音增强
  2. 微信小程序中的华为适配解决
  3. Circle Metro CodeForces - 1169A
  4. 用python写界面可以吗_python可以做界面吗
  5. windows下使用apache bench(ab)进行带多个header信息的post请求压力测试
  6. hive-计算直播同时在线人数最大值
  7. 频繁项集挖掘实战和关联规则产生
  8. 输入法中半角与全角的区别
  9. HIVE攻略 JFK_异星蜂巢Alien Hive玩法进阶攻略大全
  10. 【知识】C语言随机数生成,C语言rand和srand用法详解