零基础学IT从哪方面学起?

首先,零基础转行学IT技术虽然具有一定的难度,但是目前IT行业内有不少从业者都是跨专业转行到IT领域的,所以零基础学习IT技术,也是可以入职IT行业的。对于零基础的学习者来说,要想顺利达到IT行业的岗位入职要求,应该注重以下几个方面的内容:

第一:根据自身的知识结构选择学习方向。IT行业具有众多的岗位划分,不同的岗位往往有不同的基础知识要求,比如大数据和人工智能领域对于数学基础的要求比较高,物联网专业对于物理知识的要求比较高等等。总之,如果数学和物理基础比较好,那么选择IT行业会更容易一些。而如果基础学科不够扎实,那么也可以选择应用级开发岗位,应用级开发岗位的需求量也是比较大的,比如前端开发、移动端开发、Web开发等领域就有大量的应用级开发岗位。

第二:注重动手实践能力的培养。学习IT技术一定要多做实验,通过实验不仅能够方便概念的理解,同时也能够积累大量的技术经验,不论是学习编程技术还是网络技术,动手实践能力往往能够决定是否会有一个更强的岗位竞争力。

第三:从实习岗位开始做起。对于大部分零基础的学习者来说,由于知识结构上会有诸多不足,所以在学习完基本的技能之后,最好先找一个实习岗位全方面锻炼一下。由于实习岗位往往并不会有太大的工作压力,所以会有足够的时间进行学习,这个过程往往会补学大量的知识,也会为后续的就业打下一个扎实的基础。

以上内容为大家介绍了零基础转行学IT技术需要注意哪些方面,本文由多测师亲自撰写,希望对大家有所帮助。/xwzx-hydt/845.html

}

先说点的别的,早上发现知乎登录不了,提示说我的账户异常,然后发了封邮件,账户能登了。然后发现答案被删,找不到了。

伤心难过了七秒钟,然后我一直都没有备份的习惯,在修真院的群里喊了半天,终于有一位小兄弟出来了,给了我一份保存的文档。

不然还真的是不想再写下去了。

以及,其他的答案也让我很无语,特别是居然并不知道CSS和JS可以是两个职位,实在忍不下去了,我会在后续讲敏捷开发的时候再重新提一下软件开发的全过程,来告诉你们为什么CSS和JS要分开,那个才是我执行敏捷开发落地七年的干货,当然,时间不定,只是赞越多,分享越多,我觉得自己的答案越有价值,心情就会好,然后知道修真院的人也会越多。

我可能会出一个系列,这个只是第一个,来讲一下互联网的各个职业发展

第三个,讲应该怎么样对IT技术人员的团队管理和绩效考核

第四个,讲如何做自己的职业规划以及如何找到一份更好的工作或者是怎么判断一个公司靠不靠谱

第五个,大概会聊一下创业公司怎么做,以及如何用MVP的方式去创业。

这些如果你们都看到了,我讲出来了,也差不多是我这八年中经历和感受到的所有了,至少会对互联网的各个方面都有了一个全面的认识。

这里面不可避免的会有对修真院的介绍,但是我能确保的是,每一篇都是干货,只不过不保证客观,也不保证有用。所以,让赞和分享更多一些好么。

言归正传,讲一下运维,这是一个很神奇的行业,一个在渐渐蚕食其他各种职业的职业,一个本来不是编程但是现在却编程越来越多的职业,你要问为什么?

说到运维,就不得不提起来服务器,以前呢,服务器很贵,带宽也很贵,机房也贵,电源也贵,反正啥都贵,而且还不稳定,那个时候运维工程师的大部分技能还是在硬件上,或者是说硬件是必不可缺少的技能,所以守着机房也是运维工程师比较常见的事儿。

而且有的时候还会兼着网管,因此,大部分的运维工作就是装个系统,搭些内部服务软件,如邮件,Wiki,Jenkins,VPN等等等。很多的时候还要会布线,会路由器,会交换机,会做资产盘查,把网管的工作也做了。

当然线上的正常发布也少不了,规范的点的公司,会分成三套或者是四套环境(我是不太能接受四套环境),就是Dev,Test,Online(三个环境的叫法会有不同,我现在越来越喜欢这种叫法)

开发环境就是给开发人员自己瞎折腾用,运维只需要把机器安装好,IP分配好就行了,开发过程中你们自己瞎折腾,每天部署多少次都可以--细节请等我讲敏捷开发的时候再说。

测试环境就会严谨一些,正常情况下每天只发布一次,太频繁QA会杀人的。

线上环境更严格,一般来说不允许频繁上线,所以只能在周二或者是周四发布,一周两次,对于WEB来说,其实是足够的(但是很搞乱的是,很多公司是周一定需求,周二开发,周三测试,周四上线,周五改Bug,这些都会在讲敏捷开发的时候提到)。

所以测试环境和线上的发布都是运维来做,因为有一个最简单的真理:

只要你把权限扔给工程师了,他就会偷偷重启服务以及偷偷改数据以及一不小心删掉某个文件,或者是清空所有数据。

而且一定会被你抓到,不要问我为什么,我要是有线上服务器的器权限,我也经常干这种事儿。。。。这比偷情的感觉要好多了,一个人偷偷摸的瞒着所有人把Bug改掉。。

这个时候运维还是运维工程师,直到虚拟化技术疯起来,直接生成了阿里云,金山云(修真院的重要合作伙伴),Ucloud等这些改变了运维工程师命运走向的公司。

云时代来临了。。。视频云,IM云,图片云,APP云等等各种跟业务相关的云服务也做起来了,确切的说短信,邮件也是各种云服务。

那么运维工程师的变成两极分化。一个是,云服务商的运维工程师越来越重要了,一些大的公司也在搭建很NB的运维自动化系统。另一个是,非云服务商或者是非大公司的运维工作变简单了,再也不用去机房换硬盘了。。反而是要熟悉和了解各种云服务器的特性。

所以,当我们现在说到运维工程师的时候,其实是分成两个阶段的

一个是传统的运维工程师做的东西,一个是现在云时代运维工程师做的内容

如果你现在想做运维,你恰恰是处在这个变革中间,我说不好未来的走向,但是这是一脉相传的,所以并不用担心运维中技术体系的中断。

这就是对运维的一个简单的介绍,哦对了。

运维是一个公司里非常重要的岗位,刚刚还忘了说到了数据备份和灾备和监控。如果你们公司有值班手机,一定是运维同学手里拿着。24小时不准关机。

无论你洗澡,上厕所,还是吃饭,或者是逛街,还是跟妹子恩爱(天地良心,我没见过一个妹子做运维,听都没听过),只要你收到报警,你就必须第一时间远程连接到服务器,然后通知相应的工程师,立刻解决问题,或者 是直接滚蛋。

通宵熬夜发版本更是正常的事儿。

你要问为什么会通宵,呵呵。发了一次版本,上线,发现不正常,于是回滚,或者是直接在线上Bug。于是运维同学就等着,老婆催也没用。然后过了两个小时,大后期后端同学说好了,可以发布了,于是执行脚本,然后又发现出了问题,接着回滚或者是在线上改。。。

你要问不是有测试环境么,不是有QA么,我就呵呵一笑。我不知道我说的关于运维的介绍是多了还是少了。反正,这个答案只是一个初稿,如果点赞过5000(感觉是不太现实的),我就再整理一版。

运维的工作大概分成几个部分,我对于修真院学习运维的少年们都这么说,大概是:

A。基础环境的搭建和常用软件的安装和配置(兼网管的还有各种程控机),常用软件指的是SVN,Git,邮箱这种,更细节的内容请参考修真院对于运维职业的介绍。

B。日常的发布和维护,如刚刚讲到的一样,测试环境和线上环境的发布和记录,原则上,对线上所有的变更都应该有记录。

C。数据的备份和服务的监控&安全配置。各种数据,都要做好备份和回滚的手段,提前准备好各种紧急预案,服务的监制要做好。安全始终都是不怎么被重点考虑的问题,因为这个东西无底洞,你永远不知道做到什么程度算是比较安全了,所以大多数都是看着情况来。

D。运维工具的编写。这一点在大的云服务器商里格外常见,大公司也是一样的。

E。Hadoop相关的大数据体系架构的运维,确实有公司在用几百台机器做Hadoop,所以虽然不常见,我还是列出来吧。

这些就是运维的基本工作内容了,然后如我之前所说,运维一般来说,大点的有两个,小点的就一个,再小的就是工程师兼着。而且大部分都在使用云服务器了。

所以普通的运维工程师的工作都可以标准化和简单了。这里并没有提到性能优化相关的部分,实际上这也是运维工作中比较常见的内容。特别是在出现问题的时候,运维永远是一个在不出问题可能就被忽视,一旦出问题就会被痛骂的。。。职业。

之前有句话说的好,线上不出故障,是不现实的。

现实的做法是,出了故障之后,多久能快速恢复。我对这个很认可,原话应该是出自一家云服务器公司还是。。我不记得了。

但是这里不得不推荐一下 【猎聘网的技术总监 刘中兵】,我的老同事和好基友,前段时间刚刚在一个神马神马会(我靠,我只知道是一个很厉害的会)上分享了猎聘在自动化运维上技术积累,如果PPT能够公开的话,回头我会把它也放到运维的体系里。

当然最好的结识这些技术大牛的方式就是加入修真院,显示自己的实力之后,让修真院来帮你牵针引线。

运维的技术体系也很多,基本上是所有的工具都想要你会用,我会慢慢的整理出来一套运维体系的技术架构,当然不只包括运维,包括我说的这些所有偏技术的职业。

所以,如果觉得我写的还不错,还算靠谱,就关注我,关注群,关注微信公众号。如果觉得我是在扯淡,直接评论里骂我就好了。

这里说到的其实并不算全,确切的说,做为一个运维工程师,严谨的性格是绝对少不了的,因为线上的操作全部由你来执行,你必须要心细,要严谨,如果做不到,就别考虑了。真出了事,压力又把你压死。想想最近几年出现的运维事故吧。。。

还有就是必须对Linux系统的底层了解的深入一些。如果你想做一些高级运维的话。Python和Shell脚本都是必不可少的,最常见的运维必备语言。

写的有点不耐烦了,马丹如果不是为了宣传大修真院,我才不要做这种丹藤的事儿。

我去勾搭小姑娘多好。运维和前端其实有点想像,都是属于柳暗花明又一村的。

本来运维的工作要被后端工程师蚕食了

(后端工程师真是一个可怕的职业,可以这么说,没有后端工程师做不了的。。。包括产品,市场和运营)

然而随着云的发展, 运维工程师简直是有了新生。

网管-初级运维工程师-中级运维工程师-高级运维工程师

运维做到这个级别,已经到头了。

很少有运维的同事能做到技术叫监的级别的。所以,对于资质一般的你来说,选择了做运维,就代表着天花板很近,但是对于大多数人来说,已经可以了。

OP的门槛其实并没有太高,经常玩玩Linux会好一些,但是要学的东西,确实挺多的。处理线上故障,也是一个经验积累的过程,所以说呢,基本上算是0门槛,谁都可以考虑做,只是要看你喜欢,或者是不喜欢,进度快和慢的问题而已。

5.哪些行业适合做运维

IT界:后端工程师,网管其他界:All

刚刚介绍过了,门槛不太高,所以比较容易一些,而且,可以考虑做一段时间网管。半年或一年之后转运维,网管的薪水比较低。3000或者是5000已经到顶了。

但是转到运维,就不一样了,简直是新生。

运维的大部分事情其实都是跟业务无关的。

这在之前介绍CSS的时候说到的,两个不需要懂业务逻辑的职业。曾经有过运维工程师觉得工程师写的Sql不对帮他改了。。。然后被我狠狠的骂了一顿。

这表示着:运维工程师必须按工程师所写的步骤去执行,不允许有任何的差错,如果出错了,如果没在测试环境跑通,或者发现有问题可以跟后端工程师沟通,但是,不可以改他们的东西。

所以运维工程师能够相对有更多的时间去研究技术,然而坏处就是对一个行业了解的会比较少。

所以这个职业比较大的问题就是,想要再转行成其他的职业,已经很难了,只能一条路走到黑。嗯。比较难。

天花板和CSS一样,能看得到,但是!已经很适合了,薪水毕竟不算低呢。

7.去哪里学,怎么成长

当然是修真院了,第一个。然后还有一些其他的运维培训,我不太了解,运维这个其实是几种职业培训里相对来说比较简单的。因为大部分都是跟业务关系不大,是可以培养出来的。

自己找资料的话,只能根据技术的关键字去找了,还好大部分都不算特别难,等遇到难题的时候,你也一定是工作了不少,然后会遇到一些技术上大牛的运维。

“QA最好的出路就是产品经理”。

这是我对QA最好的认知。我知道这里有无数反对的声音,我说的每一句话大概都会有认同和不认同的人,所以如果看到这句话不喜欢,就表再继续看了。

QA的这个职位,大致分成两个流派,一个是功能测试,一个是性能测试。

功能测试就是指的是各种点点点点。然后看看功能和数据有没有问题。什么浏览器,什么版本,什么情况,能否复现。

性能测试就是指:用Jemter,LoadRunner等做压测,测跨后端人员的信心。

基本上就是这两种,很少有专门针对安全的层次去做测试的。那么问题就来了,工程师和QA之间,倒底谁该做功能测试,谁该做性能测试?

工程师才应该做性能测试,因为只有他们才最应该知道自己开发的系统性能瓶颈在什么地方。

然后也是因为这句话,我举一反三的瞬间懂了什么才是一个工程师,并且在不断的践行者这个理念:

如果你是一个后端工程师,你必须对服务器的线上数据了如指掌:

有多少张表,在哪台机器上,分了几个库,一个表里有多少条数据,数据的分布是什么样的,起了多少台Service,占用多大的内存

高峰期的TPS有多少,CPU的负载怎么样,页面总响应速度有多少,一个请求调用了几个方法,每个方法执行时间是多少

是否加载了缓存,从缓存里加载的数据是多少个,大概多少MS,访问一个数据库需要多久。

你做不到这一点,你就没办法做好性能优化。所以,QA很难做到这些,也完全没有必要做到这些-实际上我们的团队是没有QA的。工程师负责所有的问题。

前端也是一样的,做了一个App,耗电量,带宽,内存,兼容性,都是前端应该关心的问题。

所以我在这里给出的一个明确答案就是:性能测试,开发人员做,功能测试,QA做。

但是这里的功能测试,并不是指的是普通的功能测试。

实际上,开发人员应该自测一百遍再提交到测试环境(我在讲到敏捷开发的话,会再次提到整个开发流程是怎么样的,以我在几家公司实施的经验来看,这套敏捷开发流程,对于很多公司梳理内部结构都会有帮助。)

QA做的应该是自动化的回归测试,边界条件测试,极限条件测试等种种很难测试得到的问题。对了,再解释一下为什么要有QA,以及为什么Bug总是测不完。

因为在我根本记不清的一篇文章里说到,哪怕是最简单的几个功能组合,想无穷穷举测完都很困难--马丹,原话我记不住了。

所以这就是给无数擅长性能测试的QA判了死刑,你之所以能做性能测试,是因为你们的开发模式和流程不对--别看我,我就是喜欢这么说,一点都不委婉。爱听听,不听拉倒。

但是QA真的不是一个很简单的活儿,可以这么说吧。QA几乎是所有职业中,最熟悉系统的人-甚至包括设计它出来,开发它出来的产品经理和各种工程师!

很多时候QA做的事情都是非常单调的,但是又必须有责任心的,拿我之前的话说,QA就是最后一道关口。

所以,如果你想成为一个PM,你可以考虑先做QA,当然,前提是你必须遇到一个愿意给你机会做产品的好老大-比如说我。

So,接下来就开始来闲扯一下QA了。

QA需要了解需求,很多公司会要求QA写测试用例,我觉得是扯淡。完全是在浪费时间。通常开发三周,QA测试的时间只有一周到一周半。还有关于提前写测试用例的,都不靠谱。

但是总之,了解需求,就算是不写也要自己知道自己测,这是QA的必备职责。

跟着就是等开发人员开发,这个时候也会有一些奇葩公司,要求QA提前界入的,理由是加快上线周期。

之前还有说过完成一个Story就要测试完整的,我也不想吐槽了。总之,如果你真的遇到了这样的公司,你的工作就是测试,然后跟开发人员说不对。

然后开发人员说改好了,然后再测。然后你大喊一声,好毛线啊。然后开发人员说,稍等,我先梳个头。然后再告诉你好了。

然后你再说,好毛线啊。然后开发人说。。。这次真的好了,于是你测了一下,真的好了,开发人员很Nice的说:完美!

你也很开心,但是没过几秒钟,你就会喊:什么鬼,之前的功能是好的,为什么又改回去了?

如果你呢。遇到好点的流程。会在上QA之前,打版本(我始终无法理解不打版本是什么流程),会Demo,那么你可以有一个安心的测试环境了。

这个时候稍微正常点的工作,就是测试,然后把Bug录入到Jira,禅道,或者Bugzilla等各种专用的Bug管理工具。

跟着就是追踪bug(如果你们公司有Bug处理流程的话),如果有晨会就在晨会上说明,如果有周会,就在周会上统计。

大部分的QA都比较羞涩,并不太敢提Bug,并不太敢说哪个程序员的代码写的有问题。

毕竟,这是唯一一个必须要当面揭短的职业,哈哈哈哈。

基本上到这里QA的任务就没了。等着发布上线就好了。实际情况上发布上线的时候QA要等着程序员改代码,验证。。。

流程【Bug修复流程,版本发布流程】

QA里经常会嘲笑自己是技术Team里最没技术的一个。

如果说你是一个标准的QA的话,真的不用去特地研究一些压测工具的。

不过也确实可以了解一下,Jmeter怎么用,TPS是什么概念,90%线是什么意思,PostGet什么的。

自动化测试工具是我一直都强烈推荐的,无论是神马办法,只要你能做到哪怕只有一部分自动化的测试,你做回归测试就很容易了。相信我,回归测试在每一个版本发布都是需要的。只不过有的时候,只是需要跑一下脚本就好了。有问题再详细测一下。

严谨和耐性是非常非常难得的,也是QA最重要的能力。当然也包括需求的理解能力啦。

QA的发展前景。。真的不算好,跟网管一样,如果说并不能转产品的话,20K基本上就封顶了,就算是有公司,愿意出30K让你们做性能测试,也是到天花板了。

如果能转到PM,真的就很赞了,我推荐的时间应该是在半年到一年左右就开始转。

QA并没有什么门槛,一般来说,是妹子比较多。

汉子比较少,是汉子的,也多数是做点性能测试相关的。但是请相信我,这绝对不是一个好的天赋加点方式,就算是性能测试做的再6又怎么样?

所以稍微懂一点Bug修复流程就好啦。勇敢的去做QA吧。。。

5.哪些行业适合做运维

虽然是IT界的All都可以转QA,但是说实话,我没有看到过一个从其他职业转到QA的。。也许除了运维。。

职业限制也说过啦。总有重复的使用技能的厌倦感,毕竟这些技术水平都不需要太多。理解能力好一些,严谨一些就能做。

说的直接点,从事五年的QA和从事一年的QA,本质上并没有什么差别啊。但是好处就是,如果你有心,你会对系统特别特别的了解,这对于你转行做PM,是一个非常非常大的优势。再强调一遍,并不推荐QA转走技术路线。

7.去哪里学,怎么成长

修真院并不提供QA的培训,暂时并没有,以后大概会讲一下Bug处理流程和敏捷开发流程。所以,我也不知道哪里有QA的成长机会,一般都是在公司。

“真正NB的程序员都是写算法的”-----我自己瞎编的。算法工程师其实是一个很虚的概念,但是在大数据忽悠了人这么多年以后,慢慢的也开始吃香起来了。

很多经典的算法都是十年前,二十年前的,在算法本质上,诸多数学家或者是IT学者没有做过太多的改进,大家的统一的结论就是:先拿到最应用,然后改进一点是一点。

可是即便是算法很多时候不完善,也已经暴发出了强大的战斗力。

那么什么是算法呢,什么是算法工程师呢?

简单来说,算法就是瞎扯淡想的,从各种自然现象映射到计算机上去的。什么爬山算法,模拟退火。。种种种种,反正就是解决问题啦。算法工程师就是吃饱了没事干,调个参数,训练个模型玩玩的闲人。

一般来说。说到底,还是在机器学习和数据挖掘中最常见的几种东西,首先就是分类。分类算法是最常见的。分类一般会用来匹配,

比如说,上周刚刚有朋友来问我怎么做穿衣搭配种的一套方案可以快速推给其他同类用户的设计。那么首先就要收集用户的信息,设定特征值,然后训练分类模型等等。最常见的就是新闻的分类,如我之前做过的财经新闻分类,把2000多家上市公司相关的新闻自动分到所属行业。

分类完之后就是聚类,聚类用的其实不多啦,算是用的比较少的。我了解到的使用聚类算法的并不太多。

实体识别是一个核心的技术。在新闻的领域用的是比较多的,确切的说,在文本领域用的都比较多。人名,地名,股票,时间 等等都是实体识别的一部分。

关系抽取是一个相对来讲比较靠上的应用。事件识也是一样,我们曾经做过上市公司高管变动的东西。也看不出有太大的价值。

协同推荐是在三四年前,还是五六年前的时候比较靠谱的,那个时候个性化推荐刚出来,各种相关商品,书籍,还有个性化阅读,音乐等等等等。然而也并没有爆发出什么好的应用来。

豆瓣和亚马逊据说推荐的还不错,我没仔细对比过。

简来说,常用的算法,指的就是这些。

而算法工程师呢?并不是去研究算法。真的。算法工程师只是拿别人的算法:有的是自己实现,有的是直接拿开源软件来用,跑语料,找特征,调参数,优化修改而已。

在我还年少无知的时候,对算法这个很东西痴迷,后来就渐渐明白了,算法是那些博士要做的。博士只负责来做算法。在公司呢。

大部分都是要接近业务的,而且说实话,算法之间的差别,并不大。很多时候都是减轻人工负担,提供决策支持,更简单的更有效的可能就是关键词过滤。

嗯。还有很多算法工程师,做到最后,只能跑个Demo,连个像样的工程代码都写不出来。经常是一个月调出一个模型,然后再优化一两个月,然后再优化一两个月,准确率可能都提高不了一个点。

所以这其实是一个跟业务结合特别密切的岗位,很多时候的先难知识都比较有用。而且也是个很难见到效果的岗位,需要太多语料的配合了。

好的吧。大概就是这么多。

算法工程师的工作内容,大部分时间都是在调优。就是调各种参数和语料,寻找特征,验证结果,排除噪音。也会和Hadoop神马的打一些交道,mahout神马的,我那个时候还在用JavaML。现在并不知道有没有什么更好用的工具了。

有的时候还要自己去标注语料---当然大部分人都不爱做这个事儿,会找漂亮的小编辑去做。

基础【机器学习,数据挖掘】

工具【Mahout,JavaML等其他的算法工具集】

这是一个技术含量很高很高的职业。。。。特别是对不懂这个行业的人来说。

虽然有时候大部分做的东西也就那么回事儿,但是对于最基本的SVM算法,隐马模型,最大熵等还是有比较高的要求的。毕竟,懂还是不懂,差别挺大的。

我对算法工程师的薪资并不太了解,只是知道不会比较架构师的薪水低。

这个职业的人数比较少,最少也是需要硕士以上(硕士需要学的东西和写的论文真不是盖的,并不排除有很多都是抄的),所以很难给出一个精准的数据。

嗯。门槛最高的一个。最低也是要硕士,基本上都是博士在做。

大部分都是有一个博士震楼,然后一帮硕士帮着写具体的代码。

5.哪些行业适合做算法工程师

IT界:计算机算法相关的硕士或博士其他界:无

怎么说呢。算法工程师很少会写工程代码,所以写代码的能力基本上等于零。这个是一个瓶颈。另外,很少有机会能让你研究算法,只能去不断的跟业务数据去死磕。

7.去哪里学,怎么成长

说不上来怎么成长,学这东西只能是跟着学校走。自学可能性太低了。成长的路径也就是去一些大数据的公司--放心,只要是大数据的公司,基本上都是会考虑算法的。

这儿说的搜索工程师是偏Java的。并不是百度,Google这种大型的搜索,而是指一般的网站常用的搜索工程师。

搜索工程师的主要工作流程就是抓取,解析,去重,处理,索引,查询。

每个环节都有比较强的算法要求。我自己比较喜欢不区分搜索和应用组,一直觉得这两个组的人技能是相通的,能做架构的,算法也不问题。只能写模块代码的,也可以写搜索的项目。

但是实际上搜索还是值得拿出一个单独的领域的。每个领域都有比较深的知识点,因此单独拿出一个搜索工程师的概念也并不算错。

搜索工程师算是属于偏高级别的了,一般来说也是要求硕士以上。

最早的时候能做搜索的都挺厉害的,后来有一段时间之后,开源框架越来越成熟,搜索工程师也变成了一个门槛低的行业,直到NoSql DB的兴起

搜索并不是局限于是来做前端模糊搜索了,反而成了系统架构的一种方式,同样是可以在做分布式,做分层,分负载均衡,性能比单纯用DB好太多,也解析了Cache的问题。特别是Solr和ElasticSearch的出现。

或者这么说吧。以前的搜索有很大一部分都是为了前端的索引查询,只是满足于搜索一个功能的需要。后来慢慢演变出来了很多不同的需求,其中一个比较关键的词就叫做Facet。

某种程度上来讲,Facet才给搜索带来了新生,慢慢的才发现,原来并不是我在搜索框中才叫搜索。原来电商的分类搜索也是搜索,原来很多列表也可以用搜索来做。

这个又刚刚解决了Mysql的问题,各种NoSqlDB做这种索引的东西实在又有点有心无力。所以搜索才能慢慢演变成一种架构方式。

嗯。至少在我这里一直是要不断的去尝试一下。

所以搜索现在其实分成两种。

一种是传统的搜索。包括:A。抓取 B。解析C。去重D。处理E。索引F。查询

另一种是做为架构的搜索。并不包括之前的抓取解析去重,只有索引和查询。A。索引B。查询

从传统的搜索来讲。先说 A 抓取。

抓取最需要解决的问题就是抓取的优先级,理论上来讲,对一个网站上的访问,不能过超过2秒一次的频率,这个并不会给别人网站带来压力,被称为是友好的访问--表问我怎么知道这些的,我也不记得了,反正并不严谨。

因此你需要有一个很好的机制来给Url打分,判断哪些抓过了。哪些没抓。

这就是所谓的蜘蛛,也叫爬虫。但是实际上我被这个名字误导好久,真心是丹藤。

只是发一个网络请求而已,根本没有到对方网站去,马丹刚开始想出这个名字的人抽象的能力简直弱爆了。我一开始就在幻像各种程序写成的小虫子会在对方网络上跑。打野的最后才明白原来这些虫子都不出门,只是在家吐口水而已。

B 解析解析并不是一件容易的事儿。

解析要做的就是把网页的文本内容和其他没用的信息去掉。知道什么是标题,什么是作者,什么是时间,或者是其他特定的需要。一般来说,都是有两种方式。

一种是配模板,不同的网站我有不同的模板。对方网站改版我也改。这种方式最精准。但是很愁人。

所以另一种方式,自动解析,用算法或者是规则等自动解析内容的东西层出不穷。我到现在为止都觉得一切都是扯淡。寻找最大正文本块再反向解析是最科学的。

之前还听到过说,模板的自动生成。抓下来一个网站的数据,然后从上千个网页中自动解析网页解析。这个我挺感兴趣的,但是一直没试过。

总之,如果只是抓一个网站上的数据(比如说抓取百度的搜索结果哈哈哈哈)。用Python的Scrapy这种神器,几分钟搞定还是没问题的。

C。去重。去重是一个很好玩的事儿。不去重不行。因为国内的风气就是这样。你抄我,我抄你。而且。为了怕被大家发现是抄袭,还会手动的增加一段,删除一段。做为一个智能的去重系统,你就必须把这些问题都解决掉。

而且,随着时间的积累,你甚至有可能去做全量的去重(虽然我一直理解不了,为什么要做全量)。六七年前我知道的最好的算法就是SpotSig。嗯。一个很机智的算法。

D。处理。这里的处理多了去了。所有的跟NLP相关的东西都可以放到这里。包括分词,词性识别,实体识别,关系抽取,事件识别,分类,聚类,热点等等等等等。

而且对于实时性的要求比较高。一篇新闻从别的网站发布,到我们的搜索系统,最快的可能就30秒或者是1两分钟--全部都是30秒不可能,因为抓取受限,只能说,最快的能看到这种新的数据。

E。索引。索引是比较简单的。主要牵涉到的就是怎么做实时索引。大概是在内存里做两个索引,然后文件有一个索引,跟着来回倒腾。。具体算法我不记得了,也是一个很机智的策略,在Bob中使用的。

如果有Facet的话,也要考虑一下Facet的设置。

F。查询。查询里主要是分词,并不牵涉到句法分析。还有一个高亮算法,以及Facet的查询。相对简单一些。不过如果是分布式的搜索就会麻烦一些,又会出现如何分片的问题。是垂直分,还是按时间分?不同的业务有不同的选择。

算法【倒排索引,权重计算公式,去重算法,Facet搜索的原理,高亮算法,实时索引】

嗯。算法偏多。跟NLP的算法又有很大的不一样。比那些分类聚类的难度要低一些,又比做项目和工程应用要再高一些。有点儿不上不下的感觉。

现在来看的话,搜索工程师的作用越来越大,某种程度上和后台工程师是重合了,之前说到过拿搜的Facet来做架构。

搜索工程师-搜索组leader

在我印象中,很少有做搜索的能够做CTO或者是架构师的,这跟搜索工程师以前的工作职责是有很大关系的,拿搜索工程师跟Application工程师做对比就能看得出来。

一个偏算法,偏调优,一个是偏项目,偏工程。偏工程的更需要视角全面,在某一个领域上没有搜索工程师研究的深入,但是整体的大局观会好一些。搜索工程师需要的则是深度。

有过两到三年Java工程师经验的人,或者是硕士毕业的,或者是数学比较好的,或者做过NLP的.这就是搜索工程师的门槛.如果你对数据结构,对算法不了解,做个搜索工程师挺没意思的.

5.哪些行业适合做搜索工程师

IT界:后端工程师中有两年经验,或者是硕士,或者是NLP其他界:无

搜索的职业限制就是他很少去做工程化的代码,对于业务逻辑的理解跟工程化的工程师还是差一些.

可以选用的框架也比较少.所以到了搜索组的leader之后,再往上走有点难.会遇到大数据的部门,跟他们比, 搜索工程师又不太懂文本分类等算法,跟项目的工程师比,在代码重构,项目规范上又会差一些.

这个就是搜索工程师的职业限制.不过,这三者之间也在不断的融合.有些工程出身的,不太了解搜索算法,只是拿来做架构体系来用,也已经够了.

7.去哪里学,怎么成长

并不知道去哪里学,等修真院有了搜索工程师的职业以后,修真院一定是一个好的学习搜索的地方.

}

身份认证 购VIP最低享 7 折!

资料分为四个方面:入门篇,提高篇,架构篇。高级篇。如果想从事IT工作的朋友,可以下载使用。东西说的比较全,而且适合处在不同阶段的学习者。

}

我要回帖

更多关于 自学IT 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信