UNIX环境高级编程,unix环境高级编程

自学linux应该学哪些内容呢?

UNIX环境高级编程,unix环境高级编程


新手学习linux方向大概如下:1.先学习linux的基本命令,比如:cd,ls,cp,mv,mkdir,rm,cat,touch增删改查等等命令 。2.熟悉基本的操作后学习linux相关文件权限命令,比如:useradd,groupadd,passwd,chmod等等命令 。3.然后在学习更进阶一点的命令,比如:进程管理,磁盘管理,网络管理,文件管理等等相关的命令 。
程序员需要达到什么水平才能顺利拿到20k无压力?
UNIX环境高级编程,unix环境高级编程


2021 届本科,从我和身边同学拿到的offer来看,去一二线大厂的普遍能拿到30w以上,月薪20k上下,甚至有更高的 。说实话,现在技术岗(主要指后端(Java、C、Go........)之 。能做到以下几点,拿到一二线大厂offer 20K 上下的薪资非常容易:算法题,技术面试笔试都考这个,所以Leetcode至少得刷两三百道吧,《剑指offer》所有题目过一遍,搞过ACM当然更好,不刷题的话,那只有挂等着你了,毕竟现在很卷,面试官也只能通过算法题来加大筛选 。
在这里也送大家一本帮助我拿到BAT 等一线大厂 offer 的算法笔记,是一位阿里大神写的,对于算法薄弱或者需要提高的同学都十分受用,算法一定是计算机学习的重中之重:BAT面试官编写的leetcode刷题笔记,看完秒杀80%的题目数据结构,不要求你手写红黑树,但是 AVL 哈希表 堆这些简单的数据结构得自己实现过;链表、线性表必须熟悉到不能再熟悉,语言的标准库实现得了解下吧?什么 Java hashmap,Cvector 你得知道实现吧 。
计算机系统知识,内存、堆栈、函数调用、数的表示等等,至少《CSAPP》得过一遍吧?(PS:这本书真的很适合程序员补齐计算机基础 。操作系统,这些东西你总得知道吧:操作系统由哪些构成、进程的状态、切换、调度进程间通信方式(共享内存、管道、消息)、进程和线程的区别、线程的实现方式(一对一、多对一等)互斥与同步(信号量、管程、锁)、死锁检测与避免并发经典的问题:读者写者、哲学家就餐问题为什么需要虚拟内存,MMU 具体如何做地址转换的内存为什么分段、分页、页面置换算法文件系统是如何组织的、虚拟文件系统(VFS)是如何抽象的最好再结合Linux实现看下,推荐《Linux内核设计与实现》,比如linux中就没有线程和进程的区分,就是一个task_struct另外,学习操作系统我也非常推荐去做下 MIT6.828,实现一些线程管理、文件系统等,计算机科班不就是搞这些的么 。
计算机网络,这个感觉相对简单,但是计网知识比较繁杂,很多同学都反映网络很难学,一大堆的网络协议,依次学完后,还是不知道网络是怎么构成的 。这就是没有用对学习方法,导致只见树木,不见森林 。学习时,推荐你抓住一条主线 「一个数据包是如何发送出去的?」带着这个问题依次去学应用层、传输层、网络层、链路层,思考这些层之间是如何串联起来的 。
这就是自顶向下的思路,那自然要推荐:《计算机网络:自顶向下方法》这本书从我们最常接触的 HTTP、FTP、SMTP 等应用层协议讲起,可以清晰看到引入各个层的作用 。学习每层协议的时候,最好自己抓包看下,wireshark抓包遇到三次快速重传会怎么样?这样映像会更加深刻另外说一点,学习的时候注意收集优质的资源,并归档,比如我自己整理的电子书库,绝不是在网上那种打包下载的,而是自己需要学到某个方向知识的时候,需要看了,去网上挨个找的,最后汇总而成 。

推荐阅读