分享

校招中的“熟悉linux操作系统”一般是指达到什么程度?

 gfergfer 2023-09-19

校招,包括对有3年以内开发经验的初级开发而言,熟悉Linux操作系统一般可以拆分成如下的要点,大家在准备面试时可以按照这些方面去准备。

1 通过看日志排查和解决实际问题。

比如Java,或者其他程序,一般是运行在linux上,运行后会生成日志,一旦出了问题就要看日志去解决,这块需要准备的点是,如何打开文件,比如用vi或tail等命令打开文件,打开文件后,用search模式搜索关键字的方式,这块一般靠口头说就行。

2 能把打包后的系统复制到linux上并启动。

这块可以说,在我们的项目里,我会用cp命令把jar包复制到linux指定目录,然后用chmod命令设置该包的权限是777,然后用sh命令启动,或者这里再准备些sh脚本命令的细节,比如如何指定环境变量和运行时参数。

这块还可以说,我们项目会用jenkins等自动化脚本来部署,在编写jenkins脚本时,我会登录到linux系统上去调试,如果jenkins参数不对,比如把文件复制到错误的路径,我会登到linux上排查和解决,同时,会在Linux上调好启动命令和参数后,再配置到jenkins脚本里。

3 能看cpu或内存用量,并排查实际问题。

比如出现了告警,我会登录到linux上,用命令看当下哪些线程占cpu(或内存),然后再用jstack等命令看细节,这方面最好是能结合一两个实际案例说。

4 能在linux上搭建组件,比如mysql或redis。

这块相对比较高级,但看些资料以后也能说。比如项目里用到的Java虚拟机,mysql,redis,甚至是spring cloud alibaba方面的nacos等,最好是集群,如果你看了一些命令后,可以在面试时说出来,这绝对是个加分项。

同时,系统在linux上运行时,一定需要些配置参数,比如gateway或nginx配置参数,nacos集群配置参数,或系统通用的全局参数,这些一般是写在配置文件里的,这块大家在看熟以后也可以说。这块能证明,你具有搭建系统和搭建组件的技能。

5 能搭建监控系统。

比如项目运行后,一旦遇到系统宕机,或者是日志里大量出现error或exception关键字,需要告警,让程序员介入处理。

这块属于架构和高级开发的工作,但初级开发看熟悉了也能做,一般是,在linux上搭建一个zabbix或cat监控组件,然后配置些参数去监控慢查询或监控日志,告警机制一般是zabbix等组件都具备的,程序员也可以说下大致怎么配。

这块本身能证明的点是,这位程序员有架构方面的能力,再进一步,能引出自己解决过哪些实际问题的话题,比如可以引出,通过监控发现了OOM,然后解决。

6 再进一步,可以和docker和k8s整合。

初级开发可以说一些比较基本的命令,比如在linux上创建docker image,并生成运行容器的命令,或者是讲些基本的k8s关于deployment和service的配置。

这块本来对初级开发是没要求的,校招生也不大会接触这个,但如果有1,2年开发经验,然后能结合项目说下自己操作过docker,再进一步是k8s,这块绝对是个加分项。

也就是说,校招生和初级开发在准备linux方面的面试话题时,应当围绕“发现问题”和“分析问题”这两个方面,再进一步可以再结合“搭建系统和组件”,比如通过哪些命令看linux日志,出现问题后通过哪些命令看cpu或内存用量,如何再定位到出问题的线程,在此基础上,可以再看些搭建组件和集群的命令。

当然事实上,一些有4,5年开发经验的资深开发,可以通过分析linux的内核参数或源码来解决问题,比如通过linux切换内存分页的参数来排查OOM问题,这块其实也是资深开发或架构证明能力的窍门,但这块对初级开发来说太难。

相反,初级开发如果就围绕linux内核细节来准备,比如去看些linux底层通讯和线程切换的源码,这块顶多只能证明自己理论方面的能力,这当然总比不说要看,但没法证明项目方面的亮点经验。

要知道,很多3年左右经验的初级开发,一般是不具备linux开发技能的,这块大家可以想象下,很多小公司的crud程序员是只在windows上开发的。所以大家只要按上述要点去准备linux方面的说辞,哪怕你平时开发项目时没机会用linux,在面试中一定能超越大多数的竞争者。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多