[4:5]

敲门声

我:您好

面试官:加加林?

我:对,我是面试的

面试官:我刚才开会呢

我:哦,没事

面试官:老家是山东济南的,对吗?

我:对对

面试官:你这还行,离这儿还不算远,济南到这里。是吗?

我:冒昧问您一句,您家是那儿的?

面试官:我家是河北的

我:哦,更近,离我们更近

面试官:是

  原来,一直在老家那边工作?

我:对,是的。我上家公司,公司是在北京。山东那边是办事处,因为机房在那里。所以,在招聘的时候,把我招过去,更方便。维护山东机房的机器,但是总部在这儿。

  我先自我介绍一下吧。

面试官:行,你先说吧。

我:我叫加加林,上家公司在北京XXX

面试官:叫什么?XXX?

我:北京XXX,离这儿也不太远。

面试官:离这儿不远吗?

我:不是太远,好像是在……记不清了。

面试官:想不起来了?没事没事

我:是在……不说这个了,不说这个了。

  一开始是维护山东体彩——山东体彩管理中心的机房,后来去年又加了……

【被面试官打断】

面试官:维护硬件吗?

我:全部

面试官:全部的?

我:全部!一个山东体彩,一个海南体彩。去年的时候,海南体彩刚上线,然后一起把海南的服务全部上线了。

面试官:这里大概有多少台服务器啊?

我:平均各50

面试官:50?

我:各50

面试官:都是物理机吗?

我:一半dell,一半IBM

面试官:他们用得都是物理机,没有虚拟化的?

我:虚拟化……今年才刚开始用了一部分,都是国企的,就是没有用那些东西。

面试官:行行

我:就是今年也让我们弄过KVM,KVM也安装过。不过,刚开始用嘛,用得不是很多。但是,现在可能好点了。

[6:35]

  架构大体分成三大块:一部分是体育总局,还有一部分是手机APP,这个APP有一些前端的模块、还有后端的模块、后端的服务模块,还有子帐户之类的模块。前端的模块有2台或者4台服务器做高性能的集群,用keepalived+nginx;中间的和后台的中间件系统又组成的高性能集群,后台的WEB服务器也是这样,2台或者4台服务器搭载的haproxy+keepalived组成的集群。就是这样。

面试官:它这大概是一个什么样的架构啊?就是后台整个应用的架构是什么样子的?应用层面的架构,包括前面的代理、应用、后面,大体是采用什么样的方式……

【我把面试官打断,他一问细节,我真的慌了。】

我:它最上面是硬件防火墙,一套两台。

面试官:硬件防火墙用的什么防火墙?

我:思科的防火墙

面试官:思科的,是吗?

我:好像是叫“NSA”,也不知道记得对不对,就是一套硬件防火墙。山东和海南共用一个硬件防火墙,往下分三大块:一个是体育总局,体育总局分两部分,一部分是骏彩,一部分是体育总局下辖的科技中心,那是一块。中间一块就是……

  体彩那一块就是专门指向于线下的实体投注站,彩民过去那种可以直接打印×××,主要是针对那个。

  中间一块就是由一些模块组成,有前端的模块、后端的后台模块、还有子帐户模块,大体有6个这样的模块。从模块往下,细说下去就是工程了。因为每一个彩种实际都是一个工程,而且是2个工程,因为需要keepalived做高可用:一个挂了,另一个能顶上。

面试官:2个工程是什么意思?

我:就是1个彩种需要2个工程,就是一主一备

面试官:……【这里面试官提到1个词,录音听不清】

我:所以,有问题的时候,另一个可以及时补上。往细里分,这是模块,模块就是前端的2台r420服务器……

面试官:可以画一下,如果说不清楚。可以大概画一下,大概是什么样子。不用画太细,我知道它的大体结构就可以了。

【让我画架构图,我就慌了。按照当时的准备,我只能说到这个程度,再细的话,我当时是真的没搭建过。】

[9:35]

我:体育总局……这是骏彩……这是科技中心……

【我画架构图】

[11:00]

  这就是刚才给您说的,这是总局的两个部分,这是应用APP的,有前端、后台、后台管理、子帐户模块、中间件模块……

面试官:这是应用的,怎么算应用APP呢?就是application吗?是吧?就是应用服务器吗?怎么算应用呢?

我:就是手机上的软件

面试官:就是手机上的,就是手机上的APP,是吗?

我:对

面试官:哦

我:对。它分成很多模块……

面试官:这一段程序是处理手机的应用?

我:对对

  然后,另一大块是对接银行的,有建行和支付宝,它们分别提供各自的接口,对接子帐户……

面试官:这样,它和它就是有关系的?

我:是的,是连接的

面试官:它要调用它的服务

我:对对。这样彩民投注的时候,需要支付嘛,就通过这里来支付。比如中奖了,通过这里来兑奖。

面试官:买×××的话,也是在手机上买?

我:手机上可以买,在这里也可以买。

面试官:在这里也可以买

【这里买是什么意思?不清楚】

我:这部分就是说,我们也维护,但是,有些东西,比如怎么中奖的……会由科技中心直接……不会……类似于黑匣子似的……不会让我们动的。因为有些东西,也很重要。比如怎么中奖……

【被他打断】

面试官:哦,这一块你们是……不让负责……

【我打断面试官】

我:这部分……我们有……但是,×××也有,以他们为主。我们这里,就类似接口的性质,就从我们这里出去了。就是说,真正每周一、三、六中……体彩的……大×××的时候,那个奖其实是从他们的体育总局下面出来,不是从我们这里出来。

面试官:就是你们只能拿他们的数据,但是进不了他们的系统?

我:就是说,他怎么……

面试官:后台你们进不去?

我:就是他们怎么生成的,我们不知道。

面试官:哦

我:因为肯定我们的权限没到那个位置。

[13:11]

面试官:那么,你们能进入到他们的操作系统吗?这个系统里面……你们是运维嘛,这些业务的部署……

我:我是说,中奖这部分,我们肯定是动不了的。但是,他们需要监管,需要控制,怎么出中奖号,肯定是由他们做的。但是,出去之后,都是我们来做。

面试官:就是说,出中奖号的算法是独立的服务器,那块独立的服务器对你们来说,就相当于黑盒子,是吗?

我:对对,是这样。

面试官:然后,你们的应用程序,去调用它们的接口

我:我感觉,您说接口,有点小。因为我们获取之后,就要下放到全省。这种东西,都是一个省一个,各省都不一样。

面试官:就是你们这套服务器,各省都有一套吗?

我:各省都有一套。

面试官:各省都有一套?

我:各省都不一样。

面试官:然后每个省都在自己的数据中心里面,还是在自己的机房里面

我:……【听不清自己说的什么】

面试官:这些是在机房里面吗?

我:这都是在一个机房。

【我指了一下架构草图,画了一个圈】

面试官:这些是一个机房?

我:但是,我还不敢说。因为海南也在我们那里。

面试官:哦

我:海南和山东在一个机房,那你说别的省,比如内蒙古和山西,是不是在一块……

面试官:哦,有的可能是合的,有的……

我:那我不敢说。

面试官:不知道,是吧?

我:不敢说,因为我们都归国家体彩管理中心管,但是它们下面怎么分的,我们就不好说了。

面试官:哦

我:因为海南的业务量太小,所以,可能他们自己考虑……咱不敢说人家感觉没有必要,或者怎么样……就都到我们这里了。

面试官:那没关系

  那你们日常的工作呢?你自己只负责山东那一块……

我:我是山东和海南都负责。

面试官:山东和海南的?

我:对

面试官:负责这一块

我:对对。主要是APP这一块。

面试官:主要是APP这一块?

我:主要是APP这一块,再有就是有一个网站,彩民有时候也会登录上去看一下。而且,我们那里和客服中心挨着很近,就在一间屋,挨着的。全省有用户(彩民)出什么问题,我们可以即时反馈到。

面试官:那你们日常的工作,主要日常的工作包括什么呢?

[15:40]

我:日常的工作,就是说,去年的时候,海南的业务是我和另外3位同事,加上领导一起搭建的。

面试官:4个人搭的?

我:对。

面试官:5个人?

我:嗯……算是6个人吧。

面试官:哦,6个人。

我:搭建起来之后,这个海南业务系统和山东系统差不多,结构差不多,基本是一致的。然后说……

【被打断】

面试官:6个人,你们花了多长时间?就是搭建这个系统?

【这里我就悲剧了。这个系统搭建我是知道的,但是,根本就不是我做的。不做的事情,人家干了多久,很难留下深刻的印象。】

我:……【我在编时间】

面试官:总共就50台服务器嘛

我:山东50多,海南40多。

面试官:OK,就按60台大概算吧,也就60、70台服务器吧

我:一共100多啊……

【我满脑子都在算时间,思维已经开始混乱了。这里,面试官就是指海南系统可以先按60台服务器计算。】

面试官:我是说去年搭建的海南系统嘛,海南服务器是40多台,就按50台算吧。你们是一共6个人,花了多长时间?

我:一个月吧

【悲剧了】

面试官:为什么这么长时间?因为我不太明白你这个后台的逻辑有多复杂。

我:其实,逻辑……

面试官:你就说,你们一个月……我想搭建1个50台服务器的一套环境,但是会6个人花一个月的时间……

我:嗯,虽然是6个人,但主要是我们4个人。比如有些问题,我们弄不了,会找我们主管帮忙处理。

面试官:对,就是4个人,搭建一个环境的话,我想你们肯定会有很难解决的问题。否则的话,50台服务器,如果真的很简单的话,程序啊、配置啊,很简单。就是大概清晰明了的情况下,然后,我感觉4个人怎么也用不了1个月。

我:这个……

面试官:所以,我不知道你们的难点在那儿?

我:说实话,没有什么难点。因为我们是按照山东的路子来的,虽然文档不是很成型,但是,大体的框架是有的。但是,都有时间点的。今天完成这一部分,明天完成另一部分。再有就是……然后,就是这样。

【我编不出理由了。这里我的回答,和事实差不多。因为我也想像不到,这样一套业务系统为什么会用1个月的时间。】

面试官:就是说,你们必须按照时间点走吗?还是说,想提前完成,或者之后完成是不可以的?

[18:15]

  因为我们这边的服务器要远远比你们的多得多,我们有上万台机器。我们前段时间做几百台机器,上面也有很多系统。比如一套系统大概有60台机器,都是虚拟机,60台虚拟机的情况下,可能顶多顶多一周搞定。1个人,1周搞定。所以,我不知道你们的时间,为什么会花这么多。我不知道难点在那儿。

  前段时间我们做数据迁移,所有的环境迁移,包括数据、包括应用,我们从阿里云上迁下来。我们总共是10个系统,250台虚拟机左右,总共花了2个来月。就2、3个人……基本上所有东西都是我一个人弄的。所以,我不知道你们的难点……

  我们的系统也是比较典型的混合应用,前端代理、应用服务器、数据库,后边SQL、no SQL,还有我们的系统,包括redis、mongodb,这些no sql的东西,我们都有。所以,我感觉我们的系统已经很复杂了。而且,系统之间后台互相是有调用关系的。如果不对,就会有问题。所以,我不知道你们系统的难点在那儿?

我:……

补充说明:【以下说明是我2天后发给这位面试官邮件的内容,可惜,从来就没有回复过。】

  去年5、6月份,之前公司在山东机房上线海南系统,事实上没有耗时一个月,而是一周多一点,大约是10天。为此,我特意联系了之前的同事,这方面得到了印证。

  而且,有些事情,面试时我有过介绍,海南系统基本就是照搬山东系统,整个架构没有太多的变化。这样说起来,10天其实也是有点多。我们在上线前把新的dell服务器上架加电,安装CentOS系统,然后是4个人分别部署进度表中,每台服务器上的应用。可是,这些东西弄好之后,还需要开发人员在北京把业务相关的应用安装到机器上面。在这里,出现了一些特殊的情况。无论是山东,还是海南,这套架构都需要得到体彩中心的领导认可,而领导对于架构有一个思路就是只能往上加东西。为了尽可能避免风险,不能随意去掉应用。因此,这套架构随着时间的推移,越来越大。加上开发人员的更替,有些业务模块现在的开发和运维团队也不知道到底有用没用。如果要去掉,就需要打申请,可是申请上又可能说不清楚到底会不会对系统造成影响。于是,我们就多一事,不如少一事。只好不断往上搭积木,基本上不敢撤掉其它积木。

  这个特殊情况,对于开发人员来说,就是在新的海南环境里,放进去的业务模块会出现一些在测试环境不会出现的问题。解决的过程,上线时间无形中就被拉长了。

面试官:你可以给我画一下你们的应用层级吗?就拿支持APP的这个后台应用来说,层级大概是一个什么样子的?

我:层级……有一段时间没用,记不清了。

面试官:但是,整体的系统架构都部署了那些,比如什么东西……应用服务器你们用的是什么?weblogic?还是什么?还是PHP的?数据库用的是oracle,还是什么?

我:我们前端是nginx,中间web是nginx和tomcat

面试官:nginx和tomcat都有,就是说,既有PHP的代码,又有java代码?

我:对对。因为手机上都是tomcat的,一般。

面试官:手机都是tomcat?

我:对啊,我们的手机就都是tomcat,手机APP就是tomcat的。

面试官:哦,支持APP那一块是用tomcat做的。

我:对对。然后,后端是mysql

面试官:哦,后端是mysql,多少台服务器啊?mysql

[20:46]

我:mysql是6台

面试官:都是独立的吗?

我:……6台是3组

面试官:哦,3组

我:……是3组,是这样的。然后,最外面的监控是安装的zabbix,然后又安装的svn,发布代码用。

面试官:拉代码下来的时候,要实时编译吗?自己去编译吗?

我:是开发那边发给我们脚本,然后去执行。

面试官:他们发脚本,你们用脚本去打包?

我:对,是是

面试官:你们去打相应的.jar包、.war包之类的,是吗?

我:是是

面试官:打完之后,然后把它们部署到应用服务器上,或者tomcat上去?

我:对,是这样。

【我之前的工作没有发布过代码,这里我的回答,还是吸收模拟面试的教训。但是,这里,显然面试官帮我回答了不少。他如果故意说错,我根本发现不了。】

面试官:然后呢?

【太让人崩溃了。】

我:然后……然后,往细里说,每个彩种就是1个工程,1个工程是2个,然后,它们对应肯定要安装tomcat、jdk之类,然后还有keepalived做高可用。这样,它是……

面试官:这些是用什么装的?还是用脚本安装的?

我:这些是用手工去装的。

面试官:用手工去装的,是吗?

我:这样大概,这些东西……是7个……有十几个。这种有十几个。

  说实在的,它们的安装方法和步骤都是一样的。

面试官:对对

我:只要保证仔细看,别出错……就是麻烦点。别的,倒是……

面试官:那个,基本上tomcat无非就是把jdk装上,把JAVA_HOME设好,把PATH设好

我:就是环境变量

面试官:对,没什么问题了就,不会有问题。

我:……大体就这些

面试官:嗯,大概十几台应用服务器,十几个,就按二十个算。然后,前面再有几个代理……

我:哦,还有redis集群。

面试官:还有redis集群?

我:有3台是……

面试官:你用的是redis是那种方式?是cluster,还是master-slave模式,这种单机版?

我:这个不是我装的。

【这段我就不该提。但是,如果不提,这个架构就太小了。1个月完成这套架构,实在圆不过去。】

总结:

redis的master/slave(主/从模式),就相当于是mysql的主从复制;还有就是cluster集群。

  关于redis主从模式,查看的方法和mysql很类似,在主上写东西,去从库查看有没有。配置过程,关键也是在从库增加1行参数即可。

  关于redis集群,有3种类型:客户端分片(这种类型要由开发实现),优点是分片很清晰,缺点是无法增加节点;redis cluster,优点是智能的分片调度,缺点是客户端支持不好,生产案例少;proxy(代理),优点是对用户透明,缺点好像是不支持数据迁移。

[23:13]

  那里是redis和memcache都有,redis是集群。memcache也不是我装的。

面试官:那,那一块是你装的?

我:就是nginx和tomcat,然后就是数据库的主从

面试官:主从是你设的,是吗?

我:对对

面试官:你们是3组主从吗?

我:是个……因为它2台2台不是集群嘛。

面试官:2台2台是集群?

我:2台2台……

面试官:怎么算集群?

我:2台2台是主备,就相当于主从嘛。

面试官:master-slave吗?

我:对,是这样的。

【这一段也是把自己绕晕了。转了一圈,还是回到原点。】

面试官:他们这3组之间有关系吗?就是,还是独立的?比如,第1组假如是子帐户的数据库,然后另1组放的是后台业务模块的数据库,再1组是后台管理的数据库,是这样吗?它们中间有关联的?

我:是分开的,是那个……确实是分开的,因为是3组集群数据库……怎么分得我想不起来了。

  总结:

MySQL由4组1主2从构成数据库集群,1组主从是交易数据库(trade)、1组是业务辅助系统数据库(sysman)、1组是数据库监控收集服务系统数据库(moitor),还有1组是子帐户数据库(payment)。

面试官:master-slave这一块,是你设的吗?

我:对

面试官:是你设的。他们应用程序是怎么去用这每一组master-slave数据库集群的?这一组,怎么去用啊?就是程序那一块是怎么去用这个东西?只连主,还是只连从,还是主从同时都连?

我:只连主

面试官:也就是说,从的话,其实仅仅只做备份的工作?

我:对对。因为我们那儿的业务量,没法和您这儿比。

面试官:不大,是吗?

我:是的,没法和您……

面试官:但是,全国的体彩应该还好,应该很大的呀。体彩彩民,好几万人呢。

我:怎么说呢,还是去投注站的更多。

面试官:哦,去网上买的还是少?

我:去网上买的,需要我们公司市场那一部分同事去推广。而且,我们那儿……我家是济南的,那边使用就不如鲁中、鲁东那边用得多。我们那儿好像是每推广1个市,这个市用的就多了。如果不推广,就感觉没有人知道似的。

面试官:但是,对你们的业务类型来说的话,你们的查询会比较多。因为大部分人不会在网上买,但是有可能去网上查。

我:这我还不好说。

面试官:那么,你们服务器的压力大不大啊?

[26:30]

我:压力大……就是说,不同彩种的抽奖开奖时间都是不一样的。

面试官:对。

我:就是说,开奖之后那段时间,一般开奖时间有晚上8点半、9点的,有没有9点半已经记不清了。反正,就是那几个时间点的时候,会高发一点。因为有的人,就是想开奖之前买,还有就是开奖之后看……平时,就一般情况。

  而且,我们那里每天0点到6点是关的。

面试官:哦,是关的?不对外提供服务?

我:是的,不对外提供服务。

面试官:那高峰的时候,压力能到多少?

我:这个我没测。

[27:22]

面试官:zabbix不是你去弄的吗?不是,就看zabbix监控,就能看到它的压力啊。

我:这个……

面试官:是不是你做的这个?zabbix?

我:是

面试官:那你没看过zabbix监控的数据吗?

我:……

面试官:因为把zabbix安装好之后,把agent设好之后,肯定要去zabbix的服务器上去看一下每台服务器大概是什么状态:IO多少,CPU多少、内存多少、网卡上的网络流量是多少。你肯定要去看嘛。对吧?

我:对。那就是几个数据库有时候CPU偏高,别的……反正很难看出很明显的很突发的东西来。

面试官:……

总结:查询之前的cacti图表之后发现,10M的带宽,在夜间最高峰的时候,可以达到5M。原因是这台服务器是备份服务器,晚上承担备份的工作。面向用户的前端服务器,夜间能达到4M。

  用户对我们网络的冲击,远远小于每天业务系统备份时,由于要同步数据,占用的宽带很大。

【面试官看我的笔试题】

[28:26]

面试官:你这里写错了吧?CentOS 6.11?这里……根本就没有这个版本。

我:……有啊?!

面试官:CentOS 6.11啊?

我:我去年安装的就是……山东的版本是……海南的是6……有啊,光盘上就是6.11啊……

【我已经语无伦次了】

面试官:没有6.11这个版本,现在最高到6.8

我:……啊?

面试官:现在最高到6.8,7版本到7.2了。现在,没有6.11这个……

我:不会是6.1.1吧?

面试官:CentOS版本号不这么说。

我:6.4……

面试官:一般6.0、6.1、6.2、6.3、6.4,都这样说。

总结:

  这里应该是我当时记混了。

  目前,简历里已经修改在CentOS 6.4 64位。

[29:33]

面试官:那你们zabbix监控redis集群吗?

我:肯定要监控

面试官:都监控什么东西?怎么监控实现的?就是redis的状态。咱不说跑的服务器,……【这里录音模糊】……随便加都可以。但是,redis本身它服务的状态,就是这个服务好,不好,压力多大……

我:想不起来了……

【继续崩溃】

总结:

Redis使用自带的INFO命令,进行状态监控。以一种易于解释且易于阅读的格式,返回关于Redis服务器的各种信息和统计数值。

也就是自定义的监控脚本要调用INFO命令,key需要调用这个监控脚本。

参考资料:http://bjstack.com/article/32——Zabbix应用监控系列之Redis状态监控

【INFO命令也有少量集群的状态参数,鉴于自己目前的水平,先回答到这种程度。以后再补充。】

[30:12]

面试官:简历里写后期的维护,都是维护什么东西啊?

我:后期维护就是,因为和客服中心挨得很近,所以,彩民及时反馈的问题,和监控及时出现的问题,去及时处理。再有就是,如果开发要新加的机器,要做部署之类。大体就这些。

[30:50]

【面试官还是看笔试题】

面试官:笔试题里的脚本没写?

我:脚本用的不是很多。

  这个脚本的思路是1个for循环,有1个输入,然后是for循环……

  但是,您这个超过100……

面试官:超过100,怎么了?

我:为什么超过100,还加呢?

  大于100的,然后求和。您这里就是1列……

面试官:对,1行就1个数字

我:您这个……我能取出205,然后呢……是要和后面的加吗?

面试官:不是,这是1个文件,文件内容是1行,1行是1个数字。然后就是这里面大于100的,求1个和并打印它所在的行数。比如205,它的第3行把它求和,然后303,把它的第4行最终再打印1个总和。那么,现在大于100的,100不大于100,只有这2个大于100,那最终的总和就是508.

  然后,这2个数字,一个在第3行,一个在第4行。

我:总和是508?

  哦,就是取出来当字符进行加运算?

面试官:当然不能当字符加了,当数字加啊。数字才能加减,字符加减,应该是连接。

【我还是没听明白,把简历还回去,请他继续看】

我:您先看

面试官:nginx这个题,没弄过吗?

【面试官还在看笔试题,我有1个nginx的题空着】

我:想不起来了

  您是说,反向代理指向不同的域名,是吧?

面试官:对

我:想不起来了,得回去翻书。

面试官:你现在,已经离职了吗?

我:对

面试官:很长时间?

我:6月份

面试官:6月份?哦,2个多月了。2个月也不长啊,这才8月份。这个东西,你如果做得很多的话,做得很熟,很多是忘不了的。

[33:16]

  所以,我不知道……你看,你这儿也不对。

【还是指向笔试题】

  你感觉那一块,是你的强项?

  就是从你简历里说的这些东西,我不知道那一块是你的强项。因为你简历里写得比较多。你感觉那一块是你的强项,我拿你的强项去问。

【还在看简历】

脚本:一键重启tomcat服务脚本

cat /server/scripts/tomcat_restart.sh
#!/bin/sh
. /etc/init.d/functions
/application/tomcat/bin/shutdown.sh
sleep 5ps=$(ps -ef|grep java|grep -v grep|wc -l)
if [ $ps -eq 0 ]
then/application/tomcat/bin/startup.sh
elseecho
"please closing tomcat"break
fisleep 2if [ $ps > 0 ]
thenaction
"starting tomcat" /bin/true
elseaction
"starting tomcat" /bin/false
fi

  你的脚本也有问题。

我:您能说一下,有什么问题吗?

  就是说,是过滤……

【被他打断】

面试官:你这里用的是bash吗?是bash吗?不是bash……

我:……

面试官:sh是默认指向bash的

我:一个是解释器,再有就是说……

【面试官在细看简历里的脚本】

面试官:……

  哦,重启,是吗?

【面试官细看简历里的脚本】

  ……

  知道这个是干什么用的吗?

【指脚本里的“. /etc/init.d/functions”】

我:这是那个子函数,……加载系统函数

面试官:我知道他是系统函数,但是,它里面做了那些东西?

我:就是说,有这个东西之后,可以调用这个东西,调用这个“/bin/true”、调用这个“/bin/false”啊

面试官:嗯

我:单纯这个脚本来说,加它,主要是为了要把它打印出来的时候,要出这个东西。

面试官:哦

【面试官在细看简历里的脚本】

  ……

  “shutdown”……

【面试官在细看简历里的脚本】

  ……

  这个脚本……

【面试官在细看简历里的脚本】

  ……

我:又有问题啊?

【我苦笑】

面试官:哈哈

[35:43]

  这个脚本依赖于本地的东西,你的JAVA_HOME在那儿设的?

……

  这个“startup”里面应该是没有JAVA_HOME的,它这里面是没有JAVA_HOME的。你这里面的JAVA_HOME是在那设置的?就是说,你这个脚本,换另一个环境就不好使了。

  你没有设JAVA_HOME?

……

  而且,你这个脚本也有问题,就是说,想“shutdown”,又“shutdown”不了的时候,用“startup”起不来。对吧?所以说,你现在每次先“shutdown”,你这个脚本不一定每次都会成功的。有很多时候,会失败。

我:不是,我已经做检测了啊?它如果没有shutdown的话,我就不让它启动了。

面试官:对,所以,那运行你这个脚本导致的结果,你的tomcat没有shutdown,也没有启动起来。它一直处在shutdown的状态。但是,没有启动起来。因为你这里已经执行shutdown了。有时候,shutdown的功能,shutdown不了的。有很多时候,它50秒也shutdown不了。所以,这时候你执行这个脚本之后,你的服务是不可用的,可能是。

  而且,那个……【听不清】东西,也没有死掉。

【我打断他】

我:没有死掉,所以,我就应该killall把它彻底杀死,再启动吗?

面试官:一定会……【听不清】需要杀死吗?

5秒钟?什么叫就把它杀死了?不是一定的。

我:对,有时候……这东西时间会很长。

面试官:对。

  这里面就涉及到很多东西——graceful shutdown,就是优雅的shutdown。你去看很多东西,你就可以知道,在英文里叫“graceful shutdown”……

【我打断他,终于有我听明白的了】

我:哦,就是apache、nginx里的优雅重启吗?

面试官:对

  所以,你这样写,其实只是命令的罗列而已。【指简历里的脚本】

  而且,这个也不对。【现在只能听当时的录音,他没给我发笔试题的电子版,天知道他指的是那道笔试题】

[38:16]

  所以,我就不知道,你认为你自己的优势是什么?

我:我认为是nginx优化那一部分

面试官:什么优化?

我:nginx优化!

面试官:nginx优化,是吗?那你都优化的什么东西?

我:优化就是说,当时,安全方面,至少要把版本号去掉。

面试官:把什么去掉?

我:把版本号去掉,然后就是安装的时候,把名字也换掉,就是随意的。再有就是说,最基本的,要做gzip压缩,那个压缩功能。对js、cs【这里我没有打字错误,我当时就是那么说出来的。】之类的文件做压缩。再有就说是,图片……

【又被他打断】

面试官:为什么要把css、js做压缩呢?

我:因为就是说我在服务器这一端压缩好之后,传出去的时候,省流量,再有就是速度也快,让用户可以尽快收到,然后用户在浏览器那里……

面试官:他一定会快吗?

我:相对……相对来说,会快的。因为它的压缩比是很大的。有时候,能压缩到原来的三分之一吧。我感觉这个速度还是比较可观的。

面试官:但是,你压缩也是需要花时间的。

我:唉,这个东西……

面试官:对吧,而且你这样是耗费服务器的CPU的。1个请求无所谓,但是,有几百万个请求的时候,你这个并不是好的选择。所以,你的压缩可能需要设置1个阈值。多大的文件不压缩,多大的文件压缩,是不是这样?

我:我们那里就是设置的1K以下的不压缩。

面试官:1K以下的不压缩?

我:1K以下的不压缩。

面试官:哦。

[40:12]

我:往上的,都要压缩。

  然后就是说,远端……图片类的……就是说……

面试官:要做压缩吗?

我:图片类的不是……就是说,推到用户那里……缓存不清了那种……保存时间。

面试官:保存时间?

我:就是“expires”……推到用户浏览器那里,加载完成之后,只要用户自己不删除,会一直在那里。就是那个参数,忘了叫什么了。要设那个……

【被他打断】

面试官:会去修改什么东西,去达到这个目的?

我:……

面试官:这里面涉及很多http相关的header

我:……是……

面试官:比如像“Last-Modified”,还有“Cache”【他可能是指“Cache-control”】,然后,还有一些就是说,什么情况下它会允许访问304

我:就是说,这些是别的……您应该说的是别的东西,这应该不是缓存时间吧?

【讲到这里,自己的思路又被打乱了。】

面试官:这都是跟缓存相关的,用户客户端浏览器访问服务器的时候,它的缓存是受服务器的控制。什么时候缓存,什么样的情况下是缓存的,我多长时间去访问一次服务器,服务器认为本地不需要再去重新拿了……缓存有失效的。

我:有一些,你比如我服务端有一些东西,是不能这样做的。需要实时推送给用户,还有一些推给用户,会做改名。这样,就可以保证不会说用户会拿到旧的东西。

【这里,我直接说缓存的保存时间就行,他所说的那种文件,把保存时间缩短,甚至不缓存就OK。】

面试官:对啊,那你怎么保证这个东西呢?

[42:11]

我:就是说,我们有些文件推送新东西,会把文件名改名。

面试官:不改名,就实现不了吗?不改名的话,那你如果一直在更新东西的话,你一直改来改去。而且,改完名之后,你的程序也要改吗?比如说,我们启用1张图片,图片第1次使用,名字是“1.jpg”;然后,改名之后,成为“2.jpg”……那么,怎么让它改名成“2.jpg”呢?你要改程序,对吧?

我:不是,您推给用户的图片……

面试官:对用户那边,怎么判断他去拿这个图片的时候,是最新的。

我:这个,也得看推给用户的是什么东西吧。有一些,类似新闻那种东西,推过去就推过去了。有一些图片,修改的时候,如果今天放上去1张图片,明天再放1张一模一样的图片,文件名自动就变了。

【我这里完全就是在扯淡!鄙视自己!!】

面试官:自动就变了,是什么?

我:对,对。就是说,有一些那种blog或者bbs,上传到服务器之后,文件名到服务器端就类似md5取值那样……就很……不能说随机吧……就是说,那种图片就变成那种样子了……

面试官:随机?这肯定不是随机的,这绝对不能随机,“随机”就是程序功能错误。

我:……就是……就是说上传到服务器上的有些图片会自动变成另外……不会说是重名的,即便是同1张图片。

【BBS或者BLOG上,注册用户上传到服务器上的图片,BBS或BLOG程序会把上传的文件重新进行命名。我这里就是和这个东西混到一块了。】

面试官:那比如说,这样,同样1个文件,今天上午把它放上去之后,下午又放了一次。下午这个人同时要再去访问,他拿到的是新图片,还是旧图片?是拿,还是不拿?

我:应该是拿新的。

面试官:应该是拿最新的?

  假设我设的cache过期时间是24小时……

【我感觉这里,面试官还是希望我能回答正确的,只怪自己不争气。】

我:您设的是24小时,但是,他访问的时候,会去搜索最新的地址。

面试官:地址不变,同样的文件……

我:但是,您的那个地址是不变,但是,那个图片的名字变了。

面试官:图片的名字不变。

我:那就是说,您这儿的程序是这样设计的……

面试官:不是,就是……比如,我拿logo来说,我这个程序logo,我今天上午访问那个页面是这个图片:“1.jpg”;下午,我想把这个文件更新一下,名字没有变。我下午访问它的时候,那么它会变成“2.jpg”吗?不会。

【我打断他】

我:这是您网站上往上推的东西,就是说百度过去,或者google过去那种图片似的。它到时候有时候会变嘛,比如植树节会变成什么样的之类。那种东西,就把它的缓存时间缩小啊。比如说,缩小到1周,或者几天。然后,到时候再推送新的就是了。

【这里,自己总算回到正路上了。】

面试官:那你怎么去缩短这个时间呢?你再去修改服务器的配置去缩短这个时间吗?那么比如说是这样,第1次cache是1天,再缩成半天,还是缩成多长时间……那么,后来我又更新一次,再把时间缩短,我又更新一次,再缩短。是这样吗?

我:是说指定的图片?

面试官:对,同样的图片,我就更新同1张图片。我怎么保证用户能拿到最新的……这肯定是可以保证的,而且不需要你做任何事情,不需要任何修改用户拿到就是最新的。

【不缓存时间不就OK了?恨自己!】

[46:6]

  你可以自己搭建1个tomcat服务器,或者nginx服务器试试。用户拿到的肯定是最新的,他不会拿到旧的,而且,不需要你修改任何东西。如果你持续的改东西,那就没完没了了……把这个cache时间改成0了,这是不现实的。

  我问得差不多了,你有什么问题?

我:您刚才说,您这里的东西很多?

面试官:对,我们会有自己的私有云。我们现在的话,大概有五六百台的样子吧:生产环境和测试环境,还有预上线环境。但是,我们自己以后的数据中心建起来以后,我们会自建数据中心,大概有……原来前期规模应该是一千台物理机,加上我们的虚拟化,应该有上万台的规模。

【虽然这家公司已经和我没什么关系了,但是我总感觉这段,面试官说的很虚。当前有五六百台,慢慢要上万台?我感觉不靠谱。】

我:您这儿是给人民日报社用,还是说……怎么着?

面试官:我们有我们自己用的,主要是我们自己用。

我:您这儿还用网站上,就是说……属于人民日报下辖的一家公司,是吗?

面试官:对,对

我:怎么还自己用?您这儿有别的业务?

面试官:我们就是做我们的业务,我们跟人民日报社……我们做的业务,和人民日报社、和人民网的业务有一些……基本上是不冲突的。我们会有自己的私有云,今天他们深圳开大会也在宣布这个东西,我们和腾迅一起,搞媒体融合云,这是我们自己的私有云。我们的私有云不对外提供服务。

我:是,私有云,对。对外提供服务一般都是公有云。私有云都是自己的。

[47:59]

面试官:我们对外提供的SaaS服务,并不提供IaaS。

我:……我这儿,没什么问题了。

面试官:没什么问题了?嗯。

  你期望工资是多少?

我:期望工资12000

面试官:你现在多少啊?

我:上家是8000

面试官:嗯,行吧。

【面试官准备撤了】

我:老师,您方便留1个邮箱,或者什么的吗?

面试官:怎么了?

我:就是说,我想……我估计我的笔试题您也都看了,我想拿回去再改改,然后再给您发1份。

面试官:是说简历吗?

我:我是说笔试题。

面试官:笔试题?哦。其实我并不看重笔试题,这笔试题虽然是我出的,但是我没有标准答案,很多题都没有标准答案。

[49:2]

我:是的,您这题出的我感觉挺好的,我想回去再完善完善。您看,可以吗?

面试官:可以,可以。那我回头给你发1个电子版的,给你再看一看。

【我加他QQ有3次,往这个QQ邮箱写了3封邮件,什么回复也没有!】

我:行

面试官:然后,那我给你留1个我的QQ吧。

我:老师,您贵姓?

面试官:免贵姓左

我:左右的左,是吗?

面试官:对

【给我留QQ号】

  行,那我没什么问题。

我:行,看您也挺忙的

面试官:没事

【2个人起身】

我:您这儿一般有什么样的要求啊?

【知道自己无望,但希望多了解一点。】

面试官:其实我们这儿是高级的和初级的,都需要。主要还是看做过的东西,其实我,坦白的讲,我期望不管做过什么东西,只要做明白就可以了。不管做任何东西,那怕只做过1个东西,那怕只做过nginx,只要做明白……

我:您这儿的初级有什么要求啊?

面试官:所有的要求都是一样的。

我:初级和高级,不可能一样吧?

面试官:但是,高级的东西,他懂得东西更多,理解的层次不一样。

我:是是

面试官:对吧,比如同样一个东西,做zabbix做了一年,和你做了3年,当然肯定是不一样的。

我:zabbix都有专门的书,专门的技术书籍都有这种东西。

面试官:书是死的,人是活的

我:我的意思是这东西没有有些人想像的那么简单,虽然说只是一个监控。但是,其实,往细里说,其实是一个……它都能写成几百页,肯定不是简单的东西。

面试官:对

  我原来也不是做运维的,我做运维也只才做了一年不到。

我:但是,我看您挺全面的。

面试官:对,因为我原来是做开发的。

我:哦

面试官:就是说,很多东西不管做什么,其实都一样。这个东西,做任何一个东西,都要把它做透了。

我:是是

面试官:如果说做透一个东西,你就掌握到其实很多。

我:是是

面试官:但是,我们这边其实涉及的东西太多了,基本上你们用到的东西,我们都用过。而且都在用,而且比你们用的还要多。

我:我看出来了。我们加起来也有100多台服务器,在有些人看来,100台服务器很多了。但是,在您这儿来100台服务器,连十分之一都算不上。100台服务器的管理,和1000台、2000台,他肯定就……

【被他打断】

面试官:就是几十台和上千台,完全是不一样的。

我:这个我知道……

面试官:你说几十台到一两百台可能还能……就是手工去改,手工去操作,可能还能行。但是,如果达到上千台、几千台的规模,手工去处理那当然做不了了。

[51:56 ]

我:我感觉那得换“脑子”,不能用原来的思路去想。

面试官:你要把整个架构方案都得改了。所以说,我们现在做的最主要的东西,最重大的主要是把整个运维的体系用到的东西的架构怎么去做以后。因为现在我们虽然只有几百台,但是,我们很快就会扩。所以说,我们如果这个架构搭不好,这个整体的架构,包括从自动化运维、包括配置、包括从……【听不清】很多的这些东西如果做不好,后边会把我们自己累死的。

我:对,这个东西就和搭积木似的,底下弄不好,上边就摇晃了。

面试官:就是这个模式你要把它走好了。

我:对

面试官:因为这个模式,每个模式,比如zabbix,我们用的也是zabbix,包括我们存放运维的东西,包括我们的数据库我们去搭……对吧,我们都有自动化的东西,所以说,你们部署几十台机器4个人要花1个月……其实我们……当然,刚才我给你说的多了点,我们基本上3天,1个人肯定能搞定,基本上。对于熟手来说,3天肯定能搞定。

我:对,如果是用那种最原始的rpm定制之类,这几十台服务器……

【被他打断】

面试官:而且,就算你们安装tomcat,就看用什么去安装,半天安装50台肯定没问题,肯定是可以的。就是你把jdk装上,把jdk给它解压就行了。tomcat装上,tomcat解压,再设几个环境变量,随便找个地方放就行,放到那儿都可以。只要放好了,后面用java_home设好了。很简单,其实不需要做什么东西。

  你像init脚本,像你写的这个脚本,其实……你可以不用去……去网上搜索1个这种init脚本,放在/etc/init.d下面……

【也可能不是init脚本,只是听录音有点像。】

我:嗯,这个知道

面试官:网上有很多很多,你可以随便搜索1个,到……【听不清】上面随便搜索一下,其实都很成熟的。

  这个东西,其实没有什么太多东西。脚本拿过来,只要改好了,就是你的东西。你放到那里都可以用。对吧?

  所以,这些东西我都已经把它们全部做成……【听不清】化的东西了。我们所有的东西,包括所有的操作系统、软件版本,我们都是固定的。没有任何人,没有说经过大家允许,不允许动任何东西。

我:全都自动化了……

面试官:对。包括版本号:jdk我们是1.1.8.45,tomcat是1.8.21,然后包括数据库我们是5.6.19,CentOS用的6.6,所有这些东西,包括redis用的2.2.7.8,包括nginx用的1.7.8。所有这些东西,版本号都是固定的。没有允许的话,不允许任何人动。

[54:42]

  所以,我们所有的环境,包括测试环境、生产环境,我们所有的环境都是统一的。测试环境出的问题,都能发现的话,生产环境基本不会出太大的问题。我们从测试移到生产环境,才会减少最小的风险。

我:测试和生产的服务器都一样,性能和配置都一样就没有问题……

面试官:和配置关系不大……

我:因为有些时候,我听说,如果测试环境配置要低的话,生产环境有些东西它不一样……它的承压不一样。

面试官:对,那就要看你自己配对了吗?就是你的jvm配对了吗?jvm要配对了,不会有太大的问题。如果有问题,说明你原来的配置有问题,不对。

  因为我们这边测试和运维都是我管的,所以我们的东西都是统一的。

  行吗?

我:行

【分手,我离开】

面试官:从这儿,你可以直接下去,走到头……

我:好,这个我知道。谢谢您啊!

【握手】

我:您感觉我怎么样啊?

面试官:嗯,我们商量一下。

我:行,不难为您了。您忙着,看您也有很多事。好的,再见。

面试官:拜拜

转载于:https://blog.51cto.com/gagarin/1846597

北京第三家面试录音总结相关推荐

  1. 曾靠一份简历面试8家软件测试岗,同时拿下5家Offer,剩余三家都进入了最终面试环节。

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  2. 我,代表公司,作为甲方,面试了三家外包公司,发现他们都不行

    大纲: 一.背景 二.我们想要的效果 三.洽谈第一家外包公司 四.洽谈第二家外包公司 五.洽谈第三家外包公司 六.总结 一.背景 在#"斜杠青年" 的年终总结#一文中说到,我开始负 ...

  3. 我的-Android-面试故事---13家面试记录,附面试答案,android星座查询源码

    **总结:**这次问的问题我确实不怎么吃得住,深入一点可以,再深入一点可能就有点不行了,平时应该往更深的地方思考,就好比 Activity 生命周期大家都知道,但是为什么这么设计,这么设计的好处可能就 ...

  4. 腾讯、阿里、字节跳动三家公司有何区别!?

    互联网人爱相互跳槽,腾讯和阿里一直相互流动,近两年势头强劲的字节跳动也成为跳槽热门去向,那么在这三家公司工作有什么区别呢?一起来看-- 旗舰产品 - 擅长领域 - 腾讯:是社交领域的霸主: 阿里:是电 ...

  5. 脸书推出VR视频会议应用程序 正式跨出元宇宙第一步;三家公司新入选福布斯2021云计算百强榜;微软挖来亚马逊云业务顶级高管贝尔...

    NEWS 本周新闻回顾 微软挖来亚马逊云业务顶级高管贝尔 微软公司已经聘请亚马逊云业务高管查理·贝尔担任其企业副总裁.鉴于微软的Azure 云业务正试图从亚马逊 AWS 手中争夺份额,这一挖角行动可以 ...

  6. 金山办公科创板过会 雷军有望迎来实控第三家上市公司

    9月28日消息,据上交所消息,9月27日,科创板上市委召开了2019年第27次审议会议,并公布了相关审议情况. 审议结果显示,科创板上市委同意江苏卓易信息科技股份有限公司.优刻得科技股份有限公司.北京 ...

  7. 佐客牛排机器人餐厅_2018年中国最火的三家餐厅!秘密竟是机器人服务员?

    原标题:2018年中国最火的三家餐厅!秘密竟是机器人服务员? 智东西(公众号:zhidxcom) 文|轩窗 在CES2019上,智东西看到了不少机器人玩家推出了配送机器人.而在刚刚过去的2018年,配 ...

  8. 斐乐第五家高尔夫独立店东莞开业;康莱德酒店及度假村签约西安、南京和成都三家酒店 | 美通企业日报...

    美通社要闻摘要: 康莱德酒店及度假村签约西安.南京和成都三家酒店.FILA斐乐第五家高尔夫独立店东莞开业.日立电梯中标深圳新地标.DHL快递广州北部共享服务中心投运.贝克曼库尔特首条本土生产的自动化流 ...

  9. 三家运营商MWC上发力5G 谁是背后更大的赢家

    当人们还沉浸在春节假期的气氛中时,很多通信从业者已经开拔,远赴巴塞罗那,去邂逅一场一年一度的全球移动通信业盛会.2018世界移动通信大会(MWC)于2月26日-3月1日召开,2018MWC是一个5G的 ...

最新文章

  1. JVM 基础面试题总结
  2. dos命令添加war包
  3. 编程之美 1.12 nim(2)
  4. github 公钥 私钥_ubuntu git生成ssh key (公钥私钥)配置github或者码云
  5. linux 系统盘无法ls,linux – ls:阅读目录.:输入/输出错误
  6. 2016年《大数据》高被引论文Top10
  7. [Node.js] ES6新语法
  8. 赛锐信息:FlexBroswer,一劳永逸解决业务系统Flash问题
  9. [原]LVM管理与虚拟机管理
  10. 谷歌浏览器访问端口限制
  11. Error response from daemon: Get https://index.docker.io/v1/search?q=elastics earchn=25: net/http: T
  12. 基于51单片机的无线测温系统
  13. 15年手持4个大厂offer的我,今天面试今日头条体无完肤
  14. Moment.js 2.22.2 源代码
  15. 【IDEA】快捷重写equals方法
  16. ai是个什么软件,和PS一样么
  17. html+css+js简单实现图片轮播效果
  18. 4米乘以12米CAD图_设备时序图的绘制方法
  19. PDCCH-based WUS signal
  20. 如何修改mysql占用的端口号_修改mysql端口号(mysql的端口号)

热门文章

  1. gradle android面试,(十七)Gradle面试问题
  2. 对于 Web 开发很有用的 jQuery 效果制作教程
  3. PASCAL VOC
  4. 字节转换比特位c语言,C语言实现双字节在数组中按比特位移动
  5. Session攻击手段(会话劫持/固定)及其安全防御措施
  6. 淘宝sign算法和使用教程
  7. python电视剧口碑分析_用Python分析IMDB历届电影票房数据(上)
  8. [BZOJ]5042: LWD的分科岛 笛卡尔树+LCA
  9. rscp胎位图_胎位图(附图片)——妈妈提前看
  10. inodemac_Inode7.0 for mac