想了很久,最终还是决定把自己从接触Linux那一刻起的情况一直到得到第一份Linux运维工程师工作的整个经过做一个总结,这么做的原因有两个,一是对这段时间有个总结,总结一下得与失;二是将整个过程的经验写下来,与对Linux技术感兴趣的小伙伴们进行分享。
首先来说一下自己是怎么接触到Linux,并开始学习的。 时间回到2016年1月份左右,这个时候是大三上学期的末尾了, 本专业的所有同学也包括我都在本地的一家科技公司进行实习,实习的主要内容是网络数据通信(TCP/IP、路由器&交换机这方面的),这个实习很有实际作用,有一部分同学选择了继续深入学习,我并没有选择留下来继续学习,或许是还没有找到正真所感兴趣的东西。 恰好这个时期也是一个非常关键的时期:选择继续读研还是本科毕业直接工作? 自己在咨询了一些亲人和朋友之后,大部分建议读研,然而,我并不想继续读研究生,转而去想自己对什么感兴趣,就继续寻找...那个寒假期间,一直在网上寻找Linux相关信息,最终锁定了Linux运维工程师这个职位。之后就开始搜集学习资源,主要是一些网络在线课程和在线教学网页。
真正开始学习Linux运维体系课程是2016年2月29号,网上找了个系统性的课程,非常全面,大概有460节课程,内容涵盖了Linux操作系统基础,linux系统精讲,shell编程,linux上web软件,关系型数据库mysql,非关系型数据库Nosql,Linux常用服务部署与优化,Linux监控和安全运维,自动化运维,虚拟化技术等等。 Linux是一个网络操作系统,所以要学习好Linux还必须懂一些基本的网络知识,还好自己在实习期间学习了基本的网络知识,以及专业课也有所接触,但是都很浅,找本书来看是最好的解决方法。
******学习篇********
接下来说一说具体的学习方法&如何去坚持。
关键字1——笔记&技术博客
从第一节课开始,老师就给我提了两个建议,一是记录电子版的学习笔记,二是写技术博客。 刚开始不懂得为什么这么做,甚至感觉电子版的笔记还不如手写来得快。 然而还是按照老师的指导去做了(该听话时就得听话^_^)。
现在看来,这么做确实有很多好处: 电子版的笔记首先可以随时随地的阅读,手机与PC实时同步; 有时候记的笔记可能会出错,电子版的笔记很方便改正;电子版的笔记也可分享给一起学习的小伙伴,共同进步; 博客的内容主要是一些比较系统性的知识点和一些详细“技术点”的记录,写在博客里的内容一定要保证很高的正确性,因为这是要放在Internet上与他人进行共享的;另外,博客也可以在找工作的时候加分。
关键字2——计划&坚持
面对一个庞大的知识体系首先得有一个清晰的学习计划,将学习对象模块化,制定好计划,细致到每天学习哪些内容。
我从第一节课开始,老师就给了一个很清晰的学习的计划,整个过程大概60天左右,每天平均5节课左右。每节课的时间不长,最多不超过15分钟。 开始的时候都是一些基础内容,没有难度,再加上极大的学习热情,开头进行得很顺利。
一个月左右学习完了基础课程,接下来的就比较有挑战性了,知识点极速横向扩张,要去了解的东西很多,再加上自己非计算机专业,开始有点吃力了。 这个时候最好的解决办法就是找书来看并且在网上搜索相关知识点,包括但不限于个人博客、维基百科、google等。 书本的好处是可以告诉我们原理性的东西,有助于打下坚实的基础;网络资源的好处是帮助我们快速理解某一个陌生的知识点,站在巨人的肩膀上距离成功会更近一点。 还有就是要做好陌生知识点的笔记,以后肯定要反复来看的。
自己常用的几个优秀的站点:
51CTO博客
CSDN博客
Linux公社
http://www.linuxidc.com/
开源中国 https://www.oschina.net/
博客园
http://www.cnblogs.com
云路课堂
http://yun.lu/student/homepage
制定好了计划,接下来就是执行力要到位。
在我的学习过程中,大概有这么几件事情会与已定学习计划产生冲突。一是大三下学期课非常多&比较难,二是同学周末的活动邀请。自己在处理这两个冲突时非常难抉择,对于专业课冲突,没办法,课还得上,成绩不能拉下。每天上课选择自己觉得有用的课听一下,记好笔记。不感兴趣的课直接略过,学习Linux相关的知识,但是作业得写,有平时分呀。 考试的话大家都差不多,一周搞定。感谢那些年老师放过的水...^_^ 。 面对同学的邀请,我自己大部分都是婉拒了,不是不想与大家一起嗨,主要是个人压力比较大。在这里对那些曾经多次邀请的同学,说声抱歉,希望兄弟理解!兄弟情谊永存! 然后感谢那些相遇并且相伴的朋友。
所以,在学习过程要尽可能的按计划去完成每一天应做的事情,当坚持不下去的时候,我会给自己提这样一些问题: 现在停下来我能去干什么,去进行下一次的放弃吗? 我这样放弃值得吗,已经做了那么多努力,现在停下来肯定划不来? 还有一个很重要的观念就是: 坚信自己现在看过的每一个知识点将来的某一天都会用的,这一天或许很远,或许就是当我去面试的时候。 就这样,每天都学习一点,记录一点,保持学习就好。
关键字3——重复
面对庞大的知识体系,再加上不争气的记忆力,重复某些知识点是不可避免的。
自己在学习过程中,每天开始学习新内容之前,总会花上几十分钟去复习前一天的知识点,看笔记也好,敲命令写脚本也好,每过一遍都会得到一些新的认识。
整个学习过程大概就是这样,总结一下各部分知识点之间的衔接关系。对于非计算机专业的同学来说,建议先学习《计算机操作系统》,这是基础,许多术语都是出自这里。 然后再学习Linux运维体系课程的同时学习《TCP/IP协议族》,网络基础和Linux同时进行,有助于互相理解,实践出真知。 把以上基础都掌握的差不多的时候,根据课程需要学习一门关系型数据库,需要一本原理性的书籍来帮助你快速提升。 在把Linux操作系统掌握的差不多的时候,就会开始shell编程的学习,这个需要多多练习。如果这个时候,距离找工作还有充分的时间的话,就可以学习一门开发语言了,建议python,专供运维开发,对以后工作很有用。
下面总结一下使用的书籍:
Linux方面: 《鸟哥的Linux私房菜基础学习篇》 《Shell编程从入门到精通》张昊 《跟阿铭学Linux》
网络方面: 《TCP/IP协议族》(第四版,Behrouz A. Forouzan著) 《TCP/IP路由技术》(CCIE)
数据库: 《数据库系统概论》 《MySQL核心技术与最佳实践》
操作系统: 《操作系统精髓与设计原理》(第六版,William Stallings著) 《操作系统教程》(Linux版) 清华大学出版社
网络资源:
GIT教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Python教程 http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431608990315a01b575e2ab041168ff0df194698afac000
Mysql教程 http://www.runoob.com/mysql/mysql-tutorial.html
运维资源 http://www.iyunv.com/portal.php
*******找工作篇*******
关于找工作,这个比较有意思。
现在来想一想,自己应该是我们这一批准备工作的小伙伴里面动手最迟的一个了。 在2016年4月份左右,许多大公司就开始了暑假实习生的招聘,
周围的许多小伙伴都开始准备实习生招聘,
而这时候我才开始学习Linux运维课程不到两个月,没办法,继续学习呗,默默告诉自己,静下心来学习,别急,把基础打扎实。一开始还想着能不能找一个实习生的工作,在现实工作环境中成长可能会更快点,经过仔细的权衡之后,最终还是放弃了实习生招聘,继续给自己充电。
一直到2016年8月底左右,开始着手秋季招聘的事,先是花了一天时间做了简历,然后就是在线投递简历,我的目标比较明确,专门投递互联网公司的运维工程司岗位,第一轮大概投了有十多家公司,在这里感谢牛客网
http://www.nowcoder.com/4329837
提供的招聘资源,给自己节约了大量的时间。 在线投递后通过后接着就是各个公司的在线笔试了,我第一家在线笔试的公司是滴滴打车,无奈他们的题目偏向开发,而自己的开发能力很弱,所以第一笔跪了。
接下来笔试的公司有美团点评、腾讯、小米、百度、迅雷等。很幸运,这些公司的笔试题都过了,下来就是面试了。说实话,自己还没有经历过真正意义上的面试,小白一个。
第一家接到面试通知的公司是百度,时间大概是9月19号,面试官大概35-40岁之间,看起来很有资历。 由于没有经验,先是自我介绍,说了不到2分钟就不知道说什么了,然后就被问问题了,答的不是很好,也比较难,进行了30分钟左右,就结束了。结果自己已经感觉到了,很失落,毕竟第一次面试。 后来分析,百度还是倾向于招聘运维开发的,自己可能性不大,不过还是学习到了很多。
第二家就是腾讯了。以下是详细过程:
腾讯 一面
什么是进程,
进程与线程的区别,
DNS解析过程(迭代 递归),
正向代理 ,反向代理 ,
shell写出个过滤含关键字abc的行 并计数,
路由器和交换机的区别 ,
堆和栈的区别,
有一台bbs服务器 怎么确定它是否在提供服务(监控工具)
top 命令(load average: 0.0 1.0 0.7,指的是过去1,5,15 分钟,系统运行进程队列中的平均进程数,单核CPU低于0.7最佳) ,
网卡算出来是byte还是bit ,
bps与Bps 的区别 ,千兆以太网 1000M 指字节还是比特 ,
TCP与UDP的区别,
Linux操作系统,网卡流量是byte还是bit,
你的电脑不能上网了,怎么排查(1.本地网卡 2. 网关 3.DNS解析是否正常)
腾讯二面
自我介绍
awk 有一个文件里面包含许多单词 单词之间以空白分隔,找出单词 'Linux' 的前一个单词
# 思路: 改变记录输入分隔符为“空格”(awk默认记录输入分隔符为换行),然后输出linux所在行的上一行
# 利用变量A保存关键字所在行的上一行
cat tencent.txt | awk 'BEGIN{RS=" "} /linux/{print A} {A=$0}'
讲一下LVS怎么做 (项目问题)
mysql主从复制,
读写分离
有一些冷热数据,对这些很冷的的数据(平时不怎么访问的数据),突然之间有很多用户访问,怎么提高磁盘的I/O能力(我的方案 做缓存,读写分离 多地分摊,CDN ) ,面试官说这些都是技术上的,让我考虑业务上方法....由于知识有限,直接请教他了:我总结就是 内容上分摊用户(用户分流),减少某一个时间点集中访问,比如:发生了地震,现在所有用户都来请求访问,你可以在客户端滚动刷新新闻头条,分散客户的注意力,减少某一时间点集中访问.........总监就是总监,突破了技术.
TCP和UDP的区别
现在,我给你用微信发送一个小视频,是哪种协议.解释原因
CDN
有一个web服务,怎么监控它在提供服务.(我从技术上分析,说 监控端口. 磁盘.CPU.网络.最后补充,当前服务的连接数(
核心
),
面试官点睛,你服务都没有请求的连接了,还监控服务器是否正常干啥?
服务是核心.
智力题:白帽子黑帽子
解答: A B 首先排除,他两地位同等,都面向着墙,没有参照物。
再说D,他能看见 B C 一黑一白,所以自己有可能是白或黑,解决不了。
C 看见B是白的,但他后面还有一个D,他觉得D可能是白的,自己就只有黑色了。(如果C是白的。D就会说自己是黑的,但是D猜不出自己的颜色,所以C就是黑帽.
)
你爱好什么,
工作地点问题
然后,我就问他我可以提问题吗,他同意了,
我就说自己的计划,让他给点建议
多关注开源框架,监控工具都是在这上面写的;
CDN 分布式
20分钟后,HR面.
自我介绍,
你平时怎么学习的,
有面试过那些公司,
从前面几次面试中学到了什么,不限于前面的Tecent面试官
你的学院名称是?有多少专业,
你的家庭情况,你父母对于你工作的看法?
有女朋友吗?
问了简历上的相关培训情况,
有什么要问我的吗?
20多分钟结束,等通知.
总结: 多关注分布式,开源监控框架。业务层面的运维。
第三家公司是美团,只进行到到第二面。 总结还是他们公司偏向招聘运维开发,而自己开发能力比较弱。
美团一面
常用的Linux命令,
cache和buffer的区别,
做笔试题,
内存换页机制 ,
redis数据格式&持久化,
快排算法
美团二面
英文自我介绍(心累),
冒泡的时间复杂度推导,
子网划分
不回复其他机器的Ping 不能使用防火墙规则:
关闭ICMP的回应即可
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
重新打开
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
智力题:
向南走1km 向东走1km 向北走1KM 能回到原点 地球上有几个这样的点
就这样结束,学习到了很多,如上。
第四家面试的公司是小米,电话面试。
小米电面
自我介绍,
基本操作系统,
深挖项目中问题LVS怎么做的?
mysql主从复制、读写分离,
nginx apache 各自的优缺点
网络分析题目以后,arp IP&MAC地址
,路由器&交换机的区别
Discuz 的上传文件问题,
nginx 限制上传文件大小怎么配置?
反向代理,正向代理
如果 www.xiaomi.com 不能提供服务了,怎么排查
DNS 的解析过程,先是缓存还是显示hosts文件
从Windows 2000开始,Windows解析名称的顺序为:
DNS cache --> hosts 文件 --> DNS Server –> NetBIOS cache --> WINS Server --> 广播 --> LMHOSTS 文件
hosts 文件的优先级高于 DNS Server,因此修改hosts文件可以跳过被污染的dns服务器。
更规范的做法是修改hosts之后,使用 ipconfig /flushdns 来清空DNS cache.
小米面试官很好,当时是在马路面上打电话进行面试的,比较吵,面试官很有耐心。 整个面试持续了将近一个小时,认识到了很多自己的不足。 后来小米的二面面试电话打过来时,我正在腾讯进行签约,只好婉拒,不浪费面试官的时间,因为肯定还有更加优秀的同学等他们去考察。
面试最终的结果
很感谢腾讯公司,9月26号晚上9:30左右,腾讯深圳总部打过来一个电话,说我通过了腾讯公司的面试,让第二天早10:30到高新区吉朗丽大酒店进行签约仪式。终于,我证明了自己的选择没有出错。 签约一共持续了两天,主要是三方信息的填写,offer的发放,后续事情的安排的等等。
关于找工作的一点经验:
1.如何选择求职岗位
首先要清楚的认识自身已经具备的和欠缺的专业技术能力,针对自己的特长去选择正确的求职岗位;目前好一点的公司都是在线网申投递简历,在线笔试,所以自己搜集资源的能力一定要强,多和朋友一起分享自己的资源,这样才会得到更多。
2.如何准备笔试
IT互联网方面的笔试题有一个特点,就是考查的知识点非常广,涵盖了操作系统、数据结构、算法、网络、数据库这几个方面,平时没事要多看看相关书籍。笔试还是非常重要的,这是找工作的第一关,应该好好准备。
3.如何面试
面试一开始先是自我介绍,所以在面试之前准备一个好的自我介绍还是很有必要的,时间控制在3分钟左右,不要太长,尽量精简的表达自己所拥有的基本求职技能,和目标岗位相关的项目经历等等。
面试过程中,要学会换位思考,面试官为什么要这么问,然后坦诚的回答面试官所提出的问题。 当不明白面试官所提出的问题时,可以向他提出疑问,以获得更多的提示,给自己留出更多的时间去思考。 对待自己不是很了解的问题,首先可以根据已经掌握的知识点进行分析回答,但是要符合正常的逻辑,实在不会就说自己只能理解到这个程度,直接坦白,别浪费对方时间,这样可以进入下一个问答环节。 整个过程要保持一种很好学的态度,他们要招的不是技术有多牛逼的学生,而是值得去培养的学生。
4.简历问题
简历最多两页比较合适。
写在简历上的东西一定要掌握得很好了才写上去,随便一个暴露在简历上的技术都要搞透彻,要不很容易跪。
简历具体写什么,互联网上很多模板,需要根据自己的求职岗位去准备,不细说了。
找工作的这个过程中心态很重要,笔试、面试过程中遇到些困难是在所难免的,顺顺利利也没意思。 我们在找工作期间,大概有五六个小伙伴,今天有可能是他通过某某公司笔试的消息,也有可能是你面试被刷的消息,不要因为一两次失败就失去希望,这时候需要保持冷静的头脑,继续进行下一场战斗。 没笔试个十来家怎么敢说自己在找工作呢? 我有一个朋友曾经说过这样一句话:我们还年轻,我们不怕失败。
最终的总结:
保持学习,保持激情。初中政治老师交给我一个很使用的方法论: 是什么?为什么?怎么办? 这大概涵盖了我们所要面对并且要经历的一切。
我也明白,这个行业的工作肯定不会轻松,需要一直学习新的技术,这是互联网行业的特点。 还好,这是自己所热爱的。
以上仅是本人对这段学习经历的一些总结,希望对小伙伴能带来积极的影响,共勉!