首页>>互联网>>DevOps->面试怎么讲devops?

面试怎么讲devops?

时间:2023-12-07 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于面试怎么讲devops的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

什么是devops

之前面试被问到这个问题,当时回答的不是很好。来重新答一次。

DevOps is to break the gap between dev and ops .

It integrates dev and operation team in order to improve collaboration and productivity by automate infrastructure ,workload ,testing and everything.

more releases

quick response to business

more automation

better quality.

code:github

testing:jenkins

communications workflows: jira,confluence,kanban borad,standingup meeting...

SRE和DevOps

DevOps 和 SRE 似乎是同一枚硬币的两个面。他们都旨在弥合开发团队和运维团队之间的鸿沟,都想要提高软件部署的效率和软件运行的可靠性。

DevOps 的定义是“一种软件工程文化和实践,旨在统一开发和运维” 。这个术语最初是由 Andrew Shafer 和 Patrick Debois 于2008年创造的,虽然花了几年时间才成为一个通用概念,但如今,几乎每个企业都在使用 DevOps。

Site Reliability Engineer(SRE) 的概念自2003年以来一直存在,比 DevOps 还要古老。它是由创建 Google 的本·特雷诺(Ben Treynor)创造的。根据 Treynor 所说,SRE 是“软件开发工程师开始承担运维人员的任务”。

DevOps 和 SRE 都倡导自动化和监视,其目标都是减少从开发到部署生产中的时间,同时又不影响代码或产品的质量。Google 指出,SRE 和 DevOps 彼此之间并没有太大区别:“在软件开发和运维方面,他们不是竞争关系,而是旨在打破组织障碍,使得更快地交付更好的软件的亲密朋友。”

DevOps 只是关心需要做什么,但 SRE 却谈到了如何可以做到。SRE 是通过使用正确的方法,工具等将理论部分扩展为有效的工作流程。这还涉及在每个人之间分担责任,并使每个人都具有相同的目标和愿景。

两场面试后的自我反思

最近在投简历,收到两场面试的机会,面试结果暂时没有收到,估计已经被pass掉了,现在做个记录,反思一下面试中我犯得低级错误。

这个是最大的问题,我现在才意识到,千万不要直接说是为了涨工资,这样非常愚蠢,我现在总结一下应该怎么说,后面有机会我就直接那来说了,不用临时去组织语言或者直接说为了加薪。

面试官问了我线程的优势,我简单说了两个,又开始扯线程的缺点,面试官又强调了一遍是说优势。这种情况是因为我虽然会用这个技术,但是从没有认真总结过这方面的内容,导致需要讨论的时候说不上来,只能一股脑的把自己知道的都说出来。答非所问算是面试中的禁忌了

我将第一份工作到最近一份工作整整9年的经历想走过场一样一股脑的说了一遍,根本没有主次没有突出重点。应该没人关心你10年前在干啥,对于面试官来说,最关心你和招聘岗位上的技能和经验有关系的工作经历,所以要挑重点讲,下次应该这样说比较好。

1.我目前的工作状态

2.我以前的项目经历跟这个job有关系的地方

3.我自己的职业规划

我再介绍项目经验的时候也没有把握住主题,没有突出重点,好比我目前再找的工作是devops,那我应该按照总分总的格式加一些详实的数据来说明我的经验。应该向下面这样开始

程序员面试,为什么感觉很多都和运维有关?

不会运维的程序员不是好程序员。 这个信条要时刻谨记,不管是面试还是自己平时在工作中都要坚持这个准则,因为这对你以后的发展大有裨益。

观念问题

一直以来,很多圈外人对我们程序员的观念就是永远的一本正经,着装单一,了无生趣,聪明绝顶,其实这是他们对程序员的误解,因为多才多艺,多姿多彩的程序员比比皆是,但是传统的观念或者说以偏概全的观念蒙蔽了他们的双眼,而他们自己又没有尝试去了解,所以导致人云亦云,给程序员披上了一层灰。

同样的,我们大部分程序员的观念也跟他们差不多,认为程序员就只是搬砖撸码的,至于各种部署服务器相关的工作应该是运维做的,其实非也,如果真的这样认为的话,那就真的太不把自己当程序员了。为什么这么说呢?因为我们程序员是实实在在撸码开发产品的群体,可是如果我们开发出来的东西只能自个在本地玩耍,却不能众乐乐,那还有什么意义,此时,你可能会说,交给运维啊,那么如果没有运维呢,就没法玩了,所以我们不能总是将希望寄托在别人身上,当自己有能力能够将系统进行部署的时候,那就该学会部署。

其实不仅仅是程序员,优秀的运维工程师也是需要会开发撸码的,因为有时候他们也需要开发一些小工具来进行验证,或者开发网页来进行服务的管理,所以说程序员和运维都是相辅相成的。

公司问题

像我们现在很多的公司都没有明确的人员分工,特别是小公司连运维都没有,所以就谈不上让运维去部署了,那么怎么办呢?肯定就是开发人员自己去部署了,如果不会部署的话就可以去网上查找资料,其实总体来说不会很难,因为我看过很多运维其实也是在网上找资料按步聚进行操作。

另外公司之所以这么要求,一方面是基于人员成本的考虑,毕竟如果一个人能干好的事为啥非得招两个人;另一方面可能基于公司的发展问题,像一般的小公司确实没必要专门招一个运维,不过随着公司的发展,后期肯定会招专业运维,毕竟专人做专事,事半功倍。

总结

永远记住“不会运维的程序员不是好程序员”,其实作为程序员不能总是把自己陷在撸码的深渊,除了撸码,我们还要学会产品需求分析、简单的UI画图、数据库分表分库及性能优化、运维服务器部署、单元及系统测试等等,总的来说,要想成为优秀的程序员,我们有必要把产品线上的每一个环节都略知一二,这是经验收获,一定会成为我们日后发展的资本。

技术迭代是需要时间的,而且公司预算不多的话,会选择现有系统继续使用。有的企业也会选择维稳,不会轻易开发新系统代替现有系统。

这是一个非常好的问题,作为一名IT从业者,我来回答一下。

首先,在当前的大数据、云计算时代,程序员在面试的过程中,经常会遇到与运维相关的问题,尤其是有自身产品(平台类)的企业,往往对于程序员的运维类知识有比较多的要求,所以当前的程序员,尤其是Java程序员,要想获得较强的岗位竞争力,一定要重视运维类知识的学习。

在当前的大数据时代背景下,很多程序员在日常开发过程中,需要与运维人员进行配合,所以程序员在面试过程中,经常会被问及与运维相关的问题,通过这样的问题,也能够全面了解程序员是否面对过大用户的并发问题,这对于判断程序员是否适合当前的招聘岗位也有一定的参考价值。

以大数据开发岗位为例,程序员在进行大数据任务开发的过程中,不可避免地需要与运维人员打交道,其中大数据平台的搭建就是比较繁琐的过程,另外还有一系列产品的安装和部署,这些通常都需要运维人员来完成。对于一款平台类产品来说,运维人员的技术能力能够在很大程度上决定软件平台的性能,而且运维人员与开发人员的配合也非常关键。

当然,对于程序员来说,如果能够自己掌握一定的运维知识,对于开发任务的开展还是很有帮助的,如果什么问题都需要运维人员来完成,不仅需要更多的运维人员,同时也会影响项目的整体开发进度。从这个角度来看,随着未来大数据技术的逐渐落地,程序员掌握一定的运维类知识,对于提升自身的工作效率,还是很有帮助的。

在程序员面试过程当中,通过一些运维知识也能够更加直观地了解到程序员的技术栈,相对于比较复杂的开发问题来说,运维知识的脉络还是比较清晰的,通过运维知识能够在一定程度上挤出一些“技术水分”,这也是很多面试官比较愿意问运维问题的主要原因。另外,对于一些创业型公司来说,程序员掌握一定的运维类知识,也会节省一些投入,尤其在产品研发的初期。

从技术体系结构来看,要想解决大用户的并发问题和系统扩展性问题,通常需要从两个角度出发,一个角度是技术选型,比如采用扩展性比较强的大数据平台,另一个角度就是硬件扩充,但是硬件扩充的前提是要有一个可扩充的平台体系,而通过运维知识,程序员的交流会更明确,技术方案也比较直观。

从岗位任务划分的角度来看,程序员的工作任务与运维人员的工作任务有比较明确的边界,但是在云计算技术的推动下,程序员接触运维场景的情况也在不断增加,比如通过云计算平台的支撑,很多传统的运维类任务,程序员也会比较方便地完成,比如安全配置等等。

最后,程序员在进行面试的过程中,如果遇到的运维类问题并不清楚,一定要如实回答,因为运维类知识需要一个积累的过程,而且经验往往非常重要,所以很多运维类知识,在短期内是无法掌握的,如果盲目扩展自己的知识面,会为后续的工作带来很多麻烦。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!

一、提问之前的准备

首先,最重要的是,你自己一开始就应该想清楚:

只有明确这些根本性的问题,才能正确高效地完成面试。

二、提问的原则

假定你对上一节的三个问题,已经有了清晰的想法,那么接下来就可以设计如何提问了。

有一些提问的原则,是你应该遵循的:

三、考察专业能力

为了确认面试者是胜任的,你可以问一些与职位相关的专业方面的问题。(不过通常来说,一次面试不足以看出一个人的专业能力。)

比如,你的招聘职位是系统管理员,你可以问"如何快速地在50台机器上部署Linux?"(提示:正确答案不是刻录50张安装光盘。)

另外,你还应该向面试者了解他的过去,因为过去是未来的最好预测依据。不过,提问的重点不要仅仅是他过去的成果,更要关注在当时的环境中,他是如何决策和实施的。

四、考察综合素质

因为人是会发展的,所以某种程度上,面试者的综合素质要比他的专业能力更重要。

所以,具体的技术问题(如何调用API、什么是设计模式、编程语言的语法等等)可以少问一些,更应该关注面试者的事业心、对工作的热情、进取心、自律能力、毅力等方面。

下面是一些典型问题:

五、考察理性思维

某些情况下,你可能需要了解面试者的分析判断能力,看他能否全面地思考问题、客观地评价自己。

那么,你可以依次提出这样三个问题:

这里的重点是,让面试者从正反两方面评价一件自己熟悉的东西,看看他的思维是否片面。答案无所谓对错,只要面试者有一个明确的立场,能够从正反两方面说出令人信服的理由,就可以了。比如,某个软件的口碑不好,但是面试者说他很喜欢,而且说得出一大堆理由,清楚地解释了这种软件的优点和缺点在哪里,这样就很好。

不邀自来。众所周知,越大型的公司,分工越明确。在BAT里面,有专门的前端,后端,ops,dba等等。他们专研一方面,所以有深度,有沉淀。遇到问题了,找到相应的人,能够快速解决问题。

但绝大多数中小公司,更偏爱样样都会的全栈,恨不得你一个人把所有活儿做完。并不一定需要有多大深度,能干活儿就行了。

再说,现在提倡devops,开发懂点运维,能够更好地定位问题,部署和架构项目,这是需求,也是趋势。

对小公司而言基本没有专门的运维,所以需要研发具备一些运维的知识,比如数据库的搭建、nginx、jdk部署,其它开源中间件,比如Kafka、es等等

其实这个目前真正大规模用的少,炒概念的多,很多公司根本没机会用. 但是他会问

我觉得很自然的事,为什么总有人说得高大上?装个软件,调个参数,做个逻辑卷,调一调网络,配置一下分布式组件,搞个文件系统程序员就应该不会?

这些工作,我们公司一般运维人员搞不定的。所以用啥,自己整。

个人观点,计算机知识就必须全面,才能做好一个程序员吧?

而且看大家回复,我有8成猜对,有8成以上的架构师,不懂底层,知识面也没传说中那么广。

现在devops在流行,说白了企业为了省成本,研发要干一部分运维的活。运维只负责硬件网络和k8s维护,其他什么部署啦,服务编排啦,通通交给程序员做。

不过这样倒也合理,运维只负责全公司通用的设施建设,至于cicd,服务编排,熔断限流等等,都和业务强相关,交给开发做比较贴近实际业务

软件测试工程师面试技巧

随着互联网行业的不断发展,软件快速迭代、快速交付的需求日益凸显,软件测试人员越来越受到重视,逐渐从“幕后”走向“台前”,也将会面临更好的发展和更大的挑战。下面是小编带来的软件测试工程师面试技巧,欢迎阅读。

那如何深入软件测试?测试都有哪些方法?测试采用什么工具?自动化测试熟悉么?自动化测试具体都有什么内容?敏捷流程都有哪些环节,测试工程师在其中的作用是什么……接下来我就结合我的测试经验聊一聊测试工程师的面试要点和职业发展。

我是谁?

忘了自我介绍了,我是一名软件测试工程师。不知不觉,入行软件测试也有14年头了。待过中软国际、华为、IBM等公司。做过功能测试、自动化测试也做过性能测试,做过测试新人也做过测试测试管理,所负责的项目至今在各个领域系统运转良好,产生了极大效益。

同时我也长期在公司内担任讲师,负责软件测试理念和测试转型等内容的培训,获得过“集团金牌讲师”的称号。

如果要是从这14年中说出最宝贵的经验,我想其一应该是面试技巧和职业发展。下面我就来分享一下,希望可以帮助在测试行业迷茫和纠结的你们……

软件测试工程师的面试,不同于开发人员。

虽然都是软件从业人员,但是开发和测试侧重点不同,这样的细微之处却很少有人注意到。面试官可能因为对于测试工作理解的差异,提出的问题让面试者不知道该从何说起,而在求职过程中,信息的不对称使得测试工程师往往无法做到全面地表达自己。

严格意义上来说,尤其是在当前Agile架构或者DevOps模型下,软件测试工程师对于技术的理解广度和知识储备的广度,要远在开发人员之上。而一般开发人员的面试中的面试要点和问题,对于测试工程师来说,都是非常不适用的。

面试官技术出身的不同,其喜好或者技术特点,测试工程师往往也并不清楚,如何有针对性地回答,同时还能体现出自己的优势,另外企业是如何定义初级中级高级测试工程师,他们各自对于技术的要求是怎样的?这是一个非常值得谈一谈的内容。

知己知彼,百战不殆。如何从测试工作本身定位出发,从公司和面试官角度来谈测试工程师的面试要点,成功是事半功倍的。

九层高台,起于垒土。那么我们在讨论测试工程师面试的要点之前,自然要理解测试工程师的工作内容和主要闪光点是什么。

1、什么是软件测试?软件测试的工作内容都有哪些?

软件测试,顾名思义,是测试软件和控制软件质量的工作,后者在敏捷框架下被更多地提起。在敏捷框架下,软件的质量不仅仅是通过测试工作来控制,还包括了一整套流程和过程控制,因此测试在敏捷框架下称为QA。

也就是说,可以理解为软件测试工程师——Tester,是QA的一个真子集。严格来讲,敏捷框架下的QA和传统测试工程师实际上也是有很多区别的,这个问题我们放到以后再讲。

在这个框架下,测试工程师不仅仅要聚焦于软件测试工作,而是要从项目的开始就要介入,也叫测试前置。从需求澄清开始,QA就要在测试的角度对需求进行更细一级的了解,然后针对每个story中,开发内容是否达到需求的每个细节进行检查,同时还要控制项目进度,缺陷率等。

QA在一个标准的ScrumTeam中的地位是很高的,取决于QA对项目业务的熟悉程度,对需求的细节把握等等。可以这么说,在一个项目组中,QA是可以接替PM职务或者作为PM的Backup的。

PM、QA和Tester的关系如下图:

2、软件测试工程师应该具备的技能和素质是什么?

软件测试行业,虽然属于软件研发体系,但是因为工作内容和角度的问题,存在着自己独有的技能要求和职业素质要求。

在软件研发体系的要求之外,除开发的编码和对于各开发框架的了解,作为测试工程师或者QA,还有其他特定的要求。

由于软件研发行业的主要行为集中在编码,所以外界甚至不少从业人员对于软件研发的印象往往都很单一,甚至很多测试工程师也不清楚,作为测试工作,与软件研发相比,有哪些独特的要求?

形而上者谓之道,形而下者谓之器。一般来说,“道”是无实体的思想意识层面,“器”是指有形的工具或者流程,即“道”的具体实现。

那么我们就从“道”和“器”两个层面来简单了解一下,测试工程师应该具备的“器”和“道”分别都是什么。

【技能】

技能层面来说,首当其冲的就是沟通和协调能力,这个在QA身上更为明显。敏捷架构下,快速迭代的基础就是沟通顺畅及时和到位。在每个sprint中,需求的传达澄清和对齐,都是非常关键的,这直接从源头决定了产品的研发质量和研发成本。

在最初的需求澄清阶段,在参会人员中,不管是客户还是PM,都是从开发编码的角度正向理解需求的。此时,QA就需要从测试的角度,逆向挖掘需求,来填补其余人在需求挖掘上的空白,确保后期开发过程中,程序的功能在测试限定的边界内,从而降低项目风险和更正成本。

如果是采用了Jira和Confluence等敏捷工具的项目中,小到每个Defect的详细描述和重现定位,大到就此同开发人员甚至客户方的交流等等,这些都对于沟通和协调能力提出了很高的要求。

怎样用最简洁清晰的语言,将问题描述清楚,,提供尽可能详尽的有效信息,这个对QA的基本要求,也是很多工作中的基本要求。然而这个是在IT行业从业人员中,普遍存在的一个短板,这方面的能力是需要着重训练的。

如果这个项目同时还是牵扯到其他模块或者其他项目组,那么有关流程处理和数据准备等环节的协调,也是必须的。同样的,这也是QA进阶之路上的必备技能。

接下来就是测试工程师本身的一些工作技能,比如测试案例的编写方法,例如等价类划分法、边界值分析法、因果图法等等,通过不同方法和思路,可以做到尽可能全面覆盖测试点,挖掘出更多隐含的.测试场景。

还有测试工具的使用,可以提高工作效率,做到有的放矢。近些年兴起的自动化测试中,各种基于不同平台的自动化框架,各种不同工具之间的配合,以及不同的侧重点,例如性能测试、压力测试、极限测试。

都是基于测试工具的发展而形成的全新的测试手段。在工具和工作执行层面提高效率,这个就是在测试执行和具体的测试工作中,具体的增加和变化。

而通过训练和经验积累而成的,对测试scope的估算以及对于测试进度的把控等等,也是测试技能的一部分,对于测试工作的内容本身而言,这些也都是属于“形而下者”的范畴。

自然,这一切的基础,依然离不开上层建筑——“道”,也就是测试工程师本身的意识和职业素养的影响。

当然,软件测试工程师应该具备的技能和素质不是三言两语就可以说清的,更多的经验和诀窍我都整理到了《测试工程师面试技巧全方位指导》这门课里,每个点可能都需要串很多知识,当我们具备了测试技能和素质,我想,无论在哪家公司,做什么项目,都可以手到擒来。

我将如何讲授“测试工程师面试要点和职业发展”这门课程?

《测试工程师面试要点和职业发展》主要内容分为两部分:测试工程师的面试要点,以及测试工程师职业发展的路径。

解决了“我是谁?”“我该干什么”这样的基本理念,明晰了软件测试工程师逐步升级的路径,以及需要具备的能力和发展方向。也明确了作为测试工程师,应该具备的素质和技能,具备了这些条件之后,才能够在软件测试这条路上昂首前进。

接下来介绍了在敏捷架构下,测试工程师在其他职业方向进行发展的路线,以及在这些职业方向中,作为测试工程师原有的积累所带来的优势。

本课程中一个重点就是测试工程师和测试开发工程师的区别,以及两个职位的定义和职责。

经过这些课程内容,我们再回过头来看本文开始最初的那几个问题,就可以轻而易举地理解面试官提出问题的目的和意图。对于这几个问题,如果各位有了自己的答案并且可以侃侃而谈,那么就意味着,在面试的诸多问题中,最关键的基础类别问题已经不再是问题了!

你能收获什么?

相信通过本门课程的学习,你能对软件测试工作有最基本的了解。本课程是针对所有软件测试从业者,尤其是针对希望以软件测试工程师为出发点,在这一行业有所斩获,或者在到达一定职业高度之后通过转职获得更大发展的。

通过本课程的梳理和介绍,可以给诸多测试工程师以清晰的发展思路,同时给在这一行业中辛勤努力的同仁们一个发展的方向,从而延续自己的职业生涯,并有所提高。

结语:以上就是首席CTO笔记为大家介绍的关于面试怎么讲devops的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/DevOps/16504.html