最近听网上很多人说学好Linux就不愁找不到工作,对此大家怎么看呢?
对于互联网计算机行业来说,Linux系统是使用率最高的系统,在全球范围内高达80%。虽然不接触计算机行业的朋友永远不会了解到这一点,但这不妨碍Linux在行业内的风靡。
而Windows系统相对而言更适合小白,家庭使用,而Linux系统更适合程序员、开发、测试、运维等工作使用。简而言之,学好Linux你就拥有了超大范围的可就业选择。所以学好Linux不愁工作也不是空穴来风的。
但也仅仅只是找到工作,对Linux学习更加深入后,大家都会了解到,正是Linux高使用率,在行业的风靡,也细分出了不同方向的技术领域,对各个技术方向的要求也是不一的。
就目前市场而言,主流的Linux从业方向有三:
- Linux运维
- 嵌入式Linux
- Linux服务器开发
Linux运维
首先就是服务器的维护,保证服务器正常运行不宕机,这是最最基本的要求。一旦出现问题,运维往往是第一任的背锅侠,相信有过经验的老铁,一定深有体会。
而对Linux运维来说相对写代码较少,核心功能是给开发人员提供一个可靠的服务器运作环境和技术支持。更多的是懂一些Linux命令,开发环境的搭建及各种服务的配置。
嵌入式Linux
嵌入式Linux行业其实是比较广的,
8位机8051算嵌入式;
加上RTOS,RT Thread的单片机系统开发算嵌入式;
linux系统API开发,驱动开发算嵌入式;SOC+Linux+OpenCV+CNN+YOLO也叫嵌入式。
但是薪资待遇又会不一样。所以嵌入式不是没前途,只是入行门槛相对较高,软硬件都得会,而且目前大量的嵌入式开发人员推挤在单片机领域,拉低了整个嵌入式行业的薪资水平。
如果不是兴趣使然,新手入坑还是不建议嵌入式的。
Linux服务器开发
Linux服务器开发和嵌入式开发同作为Linux应用开发的方向之一,它的优势在于:几乎每一家科技公司都会拥有自己的服务器,有服务器,那就会有Linux服务器开发程序员的身影,而且是大厂必备。
如果让我给这三个方向按市场需求量,职业上升空间及薪资水平综合排一个序的话:Linux服务器开发>Linux嵌入式>Linux运维
因为同样是在Linux系统下开发,有时会让不少人产生一种错觉,他们之间除了技术运用之外没有任何的区别,Linux服务器开发方向不是薪资高吗?我去找找资料学习一下,就能成功转型了。
如果你也是这么想的话,不妨先来看看腾讯招聘的T9后台开发工程师需要掌握哪些具体技术点再说吧~~
是不是比想象的技术能力要求更高,看上去的技术点内容也是十分繁多。如果凭借零散的资料去提升,那可能黄花菜都凉了,这也是为什么明明技术要求都公布了,但进大厂依旧很难的原因之一。
缺乏系统的技术梳理,感觉自己的会的很多,但是技术栈并没有成体系。
c/c++Linux服务器开发架构学习路线领取(对标腾讯T9)
Q群:797982296
什么是体系?
成体系就是将自己所会的技术内容做一定程度上的归纳整理。以c/c++Linux服务器开发为例,不同于Java系,c/c++Linux服务器开发方向更重视的网络编程模块(高性能网络设计)。所以对于这一块的技术内容,我们一定要有自己的技术整理,网络编程/网络原理 我们需要掌握哪些技术内容?
一、网络编程
1.网络io与select,poll,epoll
- socket与文件描述符的关联
- sigio的异步通知
- 多路复用select/poll
- 手撕epoll单线程,多线程,多进程的多种写法
- 代码实现LT/ET的区别
2.reactor的原理与实现
- reactor针对业务实现的优点
- epoll封装send_cb/recv_cb/accept_cb
- reactor多核实现
- 跨平台(select/epoll/kqueue)的封装reactor
3.http/ https服务器的实现
- reactor sendbuffer 与recvbuffer封装http协议
- http协议格式
- http2.0与http3.0
- 有限状态机fsm解析http
- https的工作流程
- https证书配置
4.websocket协议与服务器实现
- reactor sendbuffer 与recvbuffer封装websocket协议
- websocket握手流程
- websocket协议头封装
- tcp分包与粘包的解决方案
- websocket数据流的编解码
二、网络原理
1.服务器百万并发实现
- 同步处理与异步处理的数据差异
- 网络io线程池异步处理
- ulimit的fd的百万级别支持
- sysctl.conf的rmem与wmem的调优
- conntrack的原理分析
2.redis,memcached,nginx网络组件
- redis单线程reactor的实现
- memcached的多线程master-worker的reactor实现
- nginx的多进程reactor的实现
- 多进程reactor的坑点,惊群,共享内存
3.Posix API与网络协议栈
- connect,listen,accept与三次握手
- listen参数backlog
- syn泛洪的解决方案
- close与四次挥手
- 11个状态迁移
- 大量close_wait与time_wait的原因与解决方案
- tcp keepalive与应用层心跳包
- 拥塞控制与滑动窗口
4.UDP的可靠传输协议QUIC
- udp的优缺点
- udp高并发的设计方案
- qq早期为什么选择udp作为通信协议
- udp可靠传输原理
- quic协议的设计原理
- quic的开源方案quiche
- kcp的设计方案与算法原理
对于服务器开发的网络编程与原理,掌握这样的技术总结内容,基本上就能面试过大部分的问题了。
现在已是金九银十跳槽季,对于想跳槽转型c/c++Linux服务器开发方向的同学分享自己整理的一份资料包
包含:
1.500道BATJ大厂常考面试题
2.十位大厂offer斩获者面经分享
3.面试常考范围技术点总结解析
4.2021常用26份简历模板
金九银十跳槽资源包