工作面试

来自linux中国网wiki
(重定向自面试
跳到导航 跳到搜索

目录

要注意的公司

 看准网找不到的不出名公司一定不要去
 做保险  区块的不要去 

可怕的公司,坑

成都信必优vivo项目,一定不要去 如果要去这家公司,一定不要去这个项目组, 绝对的996,同时还要看vivo那边的情况,vivo那边也不太把这边的项目组当回事,他们大小周修,但是他们休双休的时候,就在周五的时候放项目过来,让这边加2天, 你休息了是可以玩2天,结果让项目组的人不能休息, 所有的版本都在周4周5的时候出,国家法定节假日也会安排时间加班, 加班给你调休时间,但是你要有时间才能休,有人累计了200多小时的调休时间了,大家可以想象了是什么情况了, 所以慎重选择吧!!

盛世

18楼

面试经验

直接ai 也不错 运维面试如何预习ansible知识

运维面试如何预习python知识

运维面试如何预习英文知识


june 21 2021 英文不太好 iptables 用什么模块没答上


汇丰银行面试经历

汇丰软件开发(广东面试

HTTP协议 socket

套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现

在建立通信连接的每一端,进程间的传输要有两个标志:IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的客户进程 服务器套接字地址定义了一个唯一的服务器进程

Internet和HTTP协议

python

python  和 shell script 交互用什么library

本文介绍三种写法

    使用os.system 来运行
    使用subprocess.run 来运行
    使用 subprocess.Popen 来运行

 ##答案 1:

参看标准函数库中的subprocess module:

    from subprocess import call
    call(["ls", "-l"])

 ##答案 2:

这里总结了调用外部程序的方法和每个方法的优缺点:

1、os.system("some_command with args")把命令和参数发送到shell。这是很好的,因为这种方式实际上可以使你同时运行多个命令、设置管道和输入/输出重定向。例如,

os.system("some_command < input_file | another_command > output_file")



https://blog.csdn.net/u013019701/article/details/121205743

[Python]与shell交互

两次terraform apply 如何知道增量的差别

To determine the incremental differences between two terraform apply commands, you can follow these steps:

1. Use Terraform state Terraform maintains a state file that records the current state of your infrastructure. After the first terraform apply, the state file reflects the resources that were created or modified. When you run a second terraform apply, Terraform compares the planned changes to the existing state recorded in the state file. You can view the planned changes by running terraform plan before the second apply. This will show you which resources will be added, modified, or deleted.

2. Version control If you are using version control for your Terraform code, you can compare different versions of your codebase to see what changes have been made between the two applies. This can help you understand what modifications might lead to different infrastructure configurations.

3. Logs and output Terraform provides detailed logs and output during the apply process. You can review these logs to see which resources were affected and what actions were taken. This can give you an indication of the incremental differences between the two applies.

4. Visualization tools There are some third-party visualization tools that can help you understand the changes in your infrastructure over time. These tools can display the differences between different versions of your Terraform state and provide a visual representation of the changes.

In summary, by using Terraform state, version control, logs, and visualization tools, you can determine the incremental differences between two terraform apply commands.

iptables

iptables(二)匹配方式和常用扩展模块

iptables常用模块介绍

精通linux

以下是一些表明一个人精通 Linux 的标志:

   命令行熟练:精通 Linux 的人应该能够熟练使用各种命令行工具,包括文件管理、文本处理、系统监控等。
   系统配置和管理:能够进行系统的配置和管理,包括用户管理、权限设置、网络配置、软件安装与升级等。
   脚本编程:精通 Linux 的人通常能够使用脚本语言(如 Bash、Python)编写自动化脚本,简化重复性任务。
   性能调优:具备对系统性能进行调优的能力,包括优化系统资源的使用、诊断和解决性能问题。
   系统安全:了解并能够实施各种安全措施,包括防火墙设置、身份认证、日志监控等。
   故障排查:能够迅速而准确地诊断和解决系统故障,包括处理服务崩溃、网络问题等。
   内核理解:对 Linux 内核有一定的了解,能够理解并配置内核参数,处理与内核相关的问题。
   虚拟化和容器化:熟悉虚拟化技术(如 KVM、VirtualBox)和容器化技术(如 Docker、Kubernetes)。
   网络管理:能够管理和故障排查网络配置,包括理解 TCP/IP 协议、网络设备配置等。
   维护和监控工具:熟练使用各种系统维护和监控工具,例如 systemd、top、htop、sar 等。

准备

用百度 查看一下这两个公司的真实情况 zhihu.com 和看准网

不要在这上面996icu的

https://github.com/996icu/996.ICU/tree/master/blacklist

1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,

游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维

开发运维:是给应用运维开发运维工具和运维平台的

应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查

系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等

总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑

开发运维、应用运维和系统运维他们的工作是环环相扣的


什么是中间件?什么是jdk?

中间件介绍:

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯 是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口

但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递

通过中间件,应用程序可以工作于多平台或OS环境。

jdk:jdk是Java的开发工具包

它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境

没有离职证明怎么办?还能入职吗?企业必须给开吗

没有离职证明怎么办?还能入职吗?企业必须给开吗

一些公司

看准网 上海贝锐信息科技股份有限公司

https://m.kanzhun.com/gsm780168.html


has list 面试或朋友面试过的公司

明动软件 2020年 08月 17日 星期一 14:42:22 CST 友ban me

resume

运维工程师简历如何写项目经验? 资深运维工程师简历怎么写看准网

运维工程师完整简历范文

english resume

How To Write a DevOps Resume

程序员英文自我介绍


https://www.hireitpeople.com/resume-database/68-network-and-systems-administrators-resumes/76476-linux-devops-systems-engineer-resume-chicago-il

https://www.indeed.com/career-advice/resume-samples/engineering-resumes/devops-engineer


https://zety.com/blog/devops-resume-example

http://jianli.yjbys.com/jianlifanwen/yingwenjianlifanwen/623767.html https://www.edureka.co/blog/devops-resume

https://enhancv.com/resume-examples/devops-engineer/

https://www.beamjobs.com/resumes/devops-resume-samples

面试(八)简短英文自我介绍

IT外企面试-英文自我介绍

IT外企面试-英文自我介绍(zz)

java岗位面试英文自我介绍,面试外企英文自我介绍

外企面试英文自我介绍【面试经验】

IT行业英文版自我介绍

一些注意点

外包公司里面,感觉爱立信、汇丰银行、卓望、南方电网(排名有分先后)都可以去试下,技术上来看,爱立信做车联网(物联网方面的,这是以后的趋势),多线程高并发在所难免,英语环境,弹性上班;汇丰开发流程比较规范,单元测试、devopts 、前后端开发、容器docker+k8s,英语环境;卓望,当时面的是大数


2020 年裸辞的都如何了?

面试经-记汇丰保险部外包技术二面

应聘时最漂亮的回答

面试]HR最常用的20个面试问题及答案

1、请你自我介绍一下自己好吗? 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。

2、你觉得你个性上最大的优点是什么? 回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在北大青鸟经过一到两年的培训及项目实战,加上实习工作,使我适合这份工作。

3、说说你最大的缺点? 回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌岌可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。

4、你对薪资的要求? 回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。 回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。 回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。 回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。

5、你对加班的看法? 回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公司奉献。 回答样本:如果工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时我也会提高工作效率,减少不必要的加班。

6、如果通过这次面试我们录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办? 回答提示:一段时间发现工作不适合我,有两种情况:①如果你确实热爱这个职业,那你就要不断学习,虚心向领导和同事学习业务知识和处事经验,了解这个职业的精神内涵和职业要求,力争减少差距;②你觉得这个职业可有可无,那还是趁早换个职业,去发现适合你的,你热爱的职业,那样你的发展前途也会大点,对单位和个人都有好处。

7、谈谈你对跳槽的看法? 回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人双方都不利,应该反对。

8、工作中难以和同事、上司相处,你该怎么办? 回答提示:①我会服从领导的指挥,配合同事的工作。②我会从自身找原因,仔细分析是不是自己工作做得不好让领导不满意,同事看不惯。还要看看是不是为人处世方面做得不好,如果是这样的话我会努力改正。③如果我找不到原因,我会找机会跟他们沟通,请他们指出我的不足,有问题就及时改正。④作为优秀的员工,应该时刻以大局为重,即使在一段时间内,领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信,他们会看见我在努力,总有一天会对我微笑的。

9、你对于我们公司了解多少? 回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加强与国外大厂的OEM合作,自有品牌的部分则透过海外经销商。

10、最能概括你自己的三个词是什么? 回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,

11、你的业余爱好是什么? 回答提示:找一些富于团体合作精神的,这里有一个真实的故事:有人被否决掉,因为他的爱好是深海潜水。主考官说:因为这是一项单人活动,我不敢肯定他能否适应团体工作。

12、作为被面试者给我打一下分? 回答提示:试着列出四个优点和一个非常非常非常小的缺点(可以抱怨一下设施,没有明确责任人的缺点是不会有人介意的)。


13、你为什么要离开原来的公司? 回答提示:①回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象。建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。②我希望能获得一份更好的工作,如果机会来临,我会抓住。我觉得目前的工作,已经达到顶峰,即沒有升迁机会。

14、你欣赏哪种性格的人? 回答提示:诚实、不死板而且容易相处的人、有“实际行动”的人。

15、你通常如何对待别人的批评? 回答提示:①沈默是金,不必说什么,否则情况更糟,不过我会接受建设性的批评。②我会等大家冷靜下来再讨论。

16、怎样对待自己的失败? 回答提示:我们大家生来都不是十全十美的,我相信我有第二个机会改正我的错误。

17、你为什么愿意到我们公司来工作? 回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些详细的原因,像“公司本身的高技术开发环境很吸引我。”、“我同公司出生在同样的时代,我希望能够进入一家与我共同成长的公司。”、“你们公司一直都稳定发展,在近几年来在市场上很有竞争力。”、“我认为贵公司能够给我提供一个与众不同的发展道路。”这都显示出你已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。

18、对这项工作,你有哪些可预见的困难? 回答提示:①不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。②可以尝试迂回战术,说出应聘者对困难所持有的态度——工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服。

19、如果录用了你,你将怎样开展工作? 回答提示: ①如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法。②可以尝试采用迂回战术来回答,如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作。”。 分析:这个问题的主要目的也是了解应聘者的工作能力和计划性、条理性,而且重点想要知道细节。如果向思路中所讲的迂回战术,面试官会认为回避问题,如果引导了几次仍然是回避的话,此人绝对不会录用了。

20、你希望与什么样的上级共事? 回答提示:①通过应聘者对上级的“希望”可以判断出应聘者对自我要求的意识,这既上一个陷阱,又是一次机会。②最好回避对上级具体的希望,多谈对自己的要求。③如“做为刚步入社会的新人,我应该多要求自己尽快熟悉环境、适应环境,而不应该对环境提出什么要求,只要能发挥我的专长就可以了。 分析:这个问题比较好的回答是,希望我的上级能够在工作中对我多指导,对我工作中的错误能够立即指出。总之,从上级指导这个方面谈,不会有大的纰漏。

21、与上级意见不一时,你将怎么办? 回答提示:①一般可以这样回答“我会给上级以必要的解释和提醒,在这种情况下,我会服从上级的意见。”②如果面试你的是总经理,而你所应聘的职位另有一位经理,且这位经理当时不在场,可以这样回答:“对于非原则性问题,我会服从上级的意见,对于涉及公司利益的重大问题,我希望能向更高层领导反映。” 分析:这个问题的标准答案是思路①,如果用②的回答,必死无疑。你没有摸清楚改公司的内部情况,先想打小报告,这样的人没有人敢要。

22、为什么选择我们公司? 回答提示:曾经在报章杂志看过关于贵公司的报道,与自己所追求的理念有志一同。而贵公司在业界的成绩也是有目共睹的,而且对员工的教育训练、升迁等也都很有制度。 分析:去面试前先做功课,了解一下该公司的背景,让对方觉得你真的很有心想得到这份工作,而不只是探探路。

23、谈谈如何适应办公室工作的新环境? 回答提示①办公室里每个人有各自的岗位与职责,不得擅离岗位。②根据领导指示和工作安排,制定工作计划,提前预备,并按计划完成。③多请示并及时汇报,遇到不明白的要虚心请教。④抓间隙时间,多学习,努力提高自己的政治素质和业务水平。

24、除了本公司外,还应聘了哪些公司? 回答提示:很奇怪,这是相当多公司会问的问题,其用意是要概略知道应徵者的求职志向,所以这并非绝对是负面答案,就算不便说出公司名称,也应回答“销售同种产品的公司”,如果应聘的其他公司是不同业界,容易让人产生无法信任的感觉。

25、你还有什么问题要问吗? 回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。

26、如果你被录用,何时可以到职? 回答提示:大多数企业会关心就职时间,最好是回答“如果被录用的话,到职日可按公司规定上班”,但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至少要一个月的时间,应进一步说明原因,录取公司应该会通融的。

IT从业人员求职面试经验

运维面试最后,你还有什么要问

https://blog.csdn.net/qq_39418469/article/details/108508770


1、面试紧张怎么办? 原因:自信心不足、准备不足、负面联想过多、得失心过重 导致:面试官认为面试者撒了谎或者不自信 如何克服:提前做好准备,将公司路线查好,不要迟到,带好简历和笔、了解公司背景和业务;建立自信,通过许多小成功积累自信;凡事积极,每个人都有优缺点,与其暴露缺点,不如展现自己的优点;看淡得失,心态平和,不妨坦诚告诉面试官自己有点紧张

2、面试着装与形象问题 最关键的第一印象:每个人对别人的第一印象都是在第一眼看到的时候就形成了,第一眼看着舒服的话就会从对方身上探寻优点,反之就是放大缺点 头发:前不抵眉,侧不掩耳,后不及领。头发不能太长,但也不要是光头 眼睛:提前休息,不要熬夜,避免带着充满血丝、肿肿的眼睛去面试 嘴巴:不要吃气味太重的食物,比如韭菜、大蒜之类,为避免空腔异味可以提前吃块口香糖

3、自我介绍要讲什么? 3分钟左右最佳,语速别太快,正式面试之前可以用手机录音下来自己先听听,可以分为三部分讲解 我是谁:介绍自己的基本信息 我做过什么:这是自我介绍最重要的环节,主要是自己工作经验和水平的展现,比如介绍下自己系统学习过Linux系统维护,在某公司搭建过Zabbix监控系统等 我想做什么:谈谈自己的职业规划,也可以说说对于公司行业发展的看法

4、面试常见问题与良好解答 为什么离开上一家公司:推荐说法是追求个人发展或遇到不可抗力因素,比如在上家公司无法得到自身能力的提升和事业的发展,切忌抱怨压力大、说领导坏话 为什么我们要聘用你:强调自己的专业能力能胜任职位,还可以说说自己职业规划,能踏踏实实给公司做实事 工作中和主管意见不一致怎么办:切忌不要在会议中和主管争执,可以私下讨论,最终要有服从意识,如果主管的决策违背原则,影响到公司的利益,则要坚持己见 谈谈对加班的看法:可以先问问加班频率,天天加班的还需要考虑清楚,毕竟身体才是第一本钱,偶尔加班的话可以说“如果公司工作需要,一定服从调度执行” 为什么选择我们公司:不要说空洞的话和乱表忠心,一般从行业、企业、岗位的发展趋势来说最好 如果入职了怎么开展工作:在短时间内了解公司业务,熟悉环境,然后不清楚的地方多问主管 如何看待运维这个职业:这个职业对所有运维人员来说都是不小的考验,需要我们随时做好准备,遇到故障时争取第一时间解决,将损失降到最低,在平时也要做好安全防范工作,防患于未然

对于其他一些答不上来的问题坦诚说自己不知道,但是也要明确态度,自己会利用业余时间查询,面试结束后不要忘记一句谢谢,还需要问问什么时候能有个答复,希望大家都能面试成功!

面试结束后的细节及职场规划理论

对薪资要求 最好不要主动说,可以问“这个比较难回答,能否告诉我一个公司对这个职位的薪资范围” 我之前工资是xx,我期望能拿xx,如果认为我提出的要求太高或觉得我现在能力不够,可以降低薪资要求,然后靠一段时间的努力来证明自己,来获得回报

有什么问题想要问? 运维部门有几个人?如果我来了的话主要负责哪些工作? 公司对新人有没有一个培训机制? 请问我大概什么时候能收到公司的一个回音? 想问问今天我的面试有哪些不足的地方,希望您能帮我指正?

面试结束后的细节: 椅子归位 水杯扔垃圾桶

面试结束语: 谢谢xx经理,期望以后能共事

职场规划养鱼理论: 1、大河沟里当小鱼 2、小河沟里当大鱼 3、大河沟里当大鱼 4、养鱼


面试题

面试时这样介绍自己的项目经验,成功率能达到98.99%


近5年大厂面试真题!涉及22个技术点,速领!

Linux运维跳槽面试精华题|第二集


k8s

StatefulSet和Deployment的区别

“Deployment用于部署无状态服务,StatefulSet用来部署有状态服务”

在Kubernetes中,Deployment和StatefulSet都是控制器对象,用于管理和扩展应用程序的Pod。它们之间的主要区别在于它们处理Pod的方式和适用的应用程序类型。 以下是Deployment和StatefulSet之间的主要区别:


有状态应用程序 vs 无状态应用程序:Deployment主要用于部署无状态应用程序,这些应用程序的实例之间是相互独立的,可以相互替换。StatefulSet主要用于部署有状态应用程序,这些应用程序的实例需要保持一定的状态和顺序,如数据库、消息队列等。


Pod名称:Deployment创建的Pod具有随机生成的名称,例如myapp-7564c8f6b4-9xv5r。StatefulSet创建的Pod具有固定的有序名称,例如myapp-0、myapp-1、myapp-2等。这使得StatefulSet中的Pod具有稳定的网络标识,方便应用程序实例之间的通信。


存储卷:Deployment通常使用无状态存储卷,这些卷可以在Pod之间共享。StatefulSet使用有状态存储卷,每个Pod都有自己的独立存储卷。这使得StatefulSet中的Pod可以保持状态,即使在故障恢复或升级过程中。


Pod创建和删除顺序:StatefulSet会按顺序创建和删除Pod。例如,在扩展或收缩StatefulSet时,Kubernetes会按照Pod的顺序(从0开始)逐个创建或删除Pod。Deployment没有固定的顺序,Kubernetes会同时创建或删除多个Pod。


更新策略:Deployment支持滚动更新策略,可以在更新应用程序时实现零停机。StatefulSet也支持滚动更新策略,但由于其有状态特性,更新过程可能需要更多的控制和协调。


总之,Deployment适用于无状态应用程序,它可以快速扩展和更新,而不需要保持Pod之间的状态和顺序。StatefulSet适用于有状态应用程序,它提供了稳定的网络标识和独立存储卷,以及有序的Pod创建和删除。在选择Deployment或StatefulSet时,请根据您的应用程序类型和需求进行选择。

作者:程序员大侠 链接:https://juejin.cn/post/7258841605809913912 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

具体的,什么场景需要使用StatefulSet呢?官方给出的建议是,如果你部署的应用满足以下一个或多个部署需求,则建议使用StatefulSet。

   稳定的、唯一的网络标识。
   稳定的、持久的存储。
   有序的、优雅的部署和伸缩。
   有序的、优雅的删除和停止。
   有序的、自动的滚动更新。
   稳定的主要是针对Pod发生re-schedule后仍然要保持之前的网络标识和持久化存储。这里所说的网络标识包括hostname、集群内DNS中该Pod对应的A Record,并不能保证Pod re-schedule之后IP不变。要想保持Pod IP不变,我们可以借助稳定的Pod hostname定制IPAM获取固定的Pod IP。借助StatefulSet的稳定的唯一的网络标识特性,我们能比较轻松的实现Pod的固定IP需求,然后如果使用Deployment,那么将会复杂的多,你需要考虑滚动更新的过程中的参数控制(maxSurge、maxUnavailable)、每个应用的IP池预留造成的IP浪费等等问题。

k8s中deployment和StatefulSet构建的pod的区别

kubernetes(k8s)StatefulSet 和 Deployment 区别及选择方式

https://www.v2ex.com/t/856087

什么是k8s?说出你的理解

K8s是kubernetes的简称,其本质是一个开源的容器编排系统,主要用于管理容器化的应用,其目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

说简单点:k8s就是一个编排容器的系统,一个可以管理容器应用全生命周期的工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且还可以做到故障自愈,所以,k8s是一个非常强大的容器编排系统。

k8s的组件有哪些,作用分别是什么?

k8s主要由master节点和node节点构成。master节点负责管理集群,node节点是容器应用真正运行的地方。

   master节点包含的组件有:kube-api-server、kube-controller-manager、kube-scheduler、etcd。
   node节点包含的组件有:kubelet、kube-proxy、container-runtime。
 kube-api-server:以下简称api-server,api-server是k8s最重要的核心组件之一,它是k8s集群管理的统一访问入口,提供了RESTful API接口, 实现了认证、授权和准入控制等安全功能;api-server还是其他组件之间的数据交互和通信的枢纽,其他组件彼此之间并不会直接通信,其他组件对资源对象的增、删、改、查和监听操作都是交由api-server处理后,api-server再提交给etcd数据库做持久化存储,只有api-server才能直接操作etcd数据库,其他组件都不能直接操作etcd数据库,其他组件都是通过api-server间接的读取,写入数据到etcd。
 kube-controller-manager:以下简称controller-manager,controller-manager是k8s中各种控制器的的管理者,是k8s集群内部的管理控制中心,也是k8s自动化功能的核心;controller-manager内部包含replication controller、node controller、deployment controller、endpoint controller等各种资源对象的控制器,每种控制器都负责一种特定资源的控制流程,而controller-manager正是这些controller的核心管理者。
 kube-scheduler:以下简称scheduler,scheduler负责集群资源调度,其作用是将待调度的pod通过一系列复杂的调度算法计算出最合适的node节点,然后将pod绑定到目标节点上。shceduler会根据pod的信息(关注微信公众号:网络技术联盟站),全部节点信息列表,过滤掉不符合要求的节点,过滤出一批候选节点,然后给候选节点打分,选分最高的就是最佳节点,scheduler就会把目标pod安置到该节点。
Etcd:etcd是一个分布式的键值对存储数据库,主要是用于保存k8s集群状态数据,比如,pod,service等资源对象的信息;etcd可以是单个也可以有多个,多个就是etcd数据库集群,etcd通常部署奇数个实例,在大规模集群中,etcd有5个或7个节点就足够了;另外说明一点,etcd本质上可以不与master节点部署在一起,只要master节点能通过网络连接etcd数据库即可。
 kubelet:每个node节点上都有一个kubelet服务进程,kubelet作为连接master和各node之间的桥梁,负责维护pod和容器的生命周期,当监听到master下发到本节点的任务时,比如创建、更新、终止pod等任务,kubelet 即通过控制docker来创建、更新、销毁容器; 每个kubelet进程都会在api-server上注册本节点自身的信息,用于定期向master汇报本节点资源的使用情况。
 kube-proxy:kube-proxy运行在node节点上,在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作,kube-proxy会监听api-server中从而获取service和endpoint的变化情况,创建并维护路由规则以提供服务IP和负载均衡功能。简单理解此进程是Service的透明代理兼负载均衡器,其核心功能是将到某个Service的访问请求转发到后端的多个Pod实例上。
 container-runtime:容器运行时环境,即运行容器所需要的一系列程序,目前k8s支持的容器运行时有很多,如docker、rkt或其他,比较受欢迎的是docker,但是新版的k8s已经宣布弃用docker。

kubelet的功能、作用是什么

kubelet的功能、作用是什么?(重点,经常会问)

kubelet部署在每个node节点上的,它主要有4个功能:

   节点管理。kubelet启动时会向api-server进行注册,然后会定时的向api-server汇报本节点信息状态,资源使用状态等,这样master就能够知道node节点的资源剩余,节点是否失联等等相关的信息了。master知道了整个集群所有节点的资源情况,这对于 pod 的调度和正常运行至关重要。
   pod管理。kubelet负责维护node节点上pod的生命周期,当kubelet监听到master的下发到自己节点的任务时,比如要创建、更新、删除一个pod,kubelet 就会通过CRI(容器运行时接口)插件来调用不同的容器运行时来创建、更新、删除容器;常见的容器运行时有docker、containerd、rkt等等这些容器运行时,我们最熟悉的就是docker了,但在新版本的k8s已经弃用docker了,k8s1.24版本中已经使用containerd作为容器运行时了。
   容器健康检查。pod中可以定义启动探针、存活探针、就绪探针等3种,我们最常用的就是存活探针、就绪探针,kubelet 会定期调用容器中的探针来检测容器是否存活,是否就绪,如果是存活探针,则会根据探测结果对检查失败的容器进行相应的重启策略;
   Metrics Server资源监控。在node节点上部署Metrics Server用于监控node节点、pod的CPU、内存、文件系统、网络使用等资源使用情况,而kubelet则通过Metrics Server获取所在节点及容器的上的数据

kube-api-server的端口是多少?各个pod是如何访问kube-api-server的

kube-api-server的端口是8080和6443,前者是http的端口,后者是https的端口,以我本机使用kubeadm安装的k8s为例:

在命名空间的kube-system命名空间里,有一个名称为kube-api-master的pod,这个pod就是运行着kube-api-server进程,它绑定了master主机的ip地址和6443端口,但是在default命名空间下,存在一个叫kubernetes的服务,该服务对外暴露端口为443,目标端口6443,这个服务的ip地址是clusterip地址池里面的第一个地址,同时这个服务的yaml定义里面并没有指定标签选择器,也就是说这个kubernetes服务所对应的endpoint是手动创建的,该endpoint也是名称叫做kubernetes,该endpoint的yaml定义里面代理到master节点的6443端口,也就是kube-api-server的IP和端口。这样一来,其他pod访问kube-api-server的整个流程就是:pod创建后嵌入了环境变量,pod获取到了kubernetes这个服务的ip和443端口,请求到kubernetes这个服务其实就是转发到了master节点上的6443端口的kube-api-server这个pod里面

k8s中命名空间的作用是什么

namespace是kubernetes系统中的一种非常重要的资源,namespace的主要作用是用来实现多套环境的资源隔离,或者说是多租户的资源隔离。

k8s通过将集群内部的资源分配到不同的namespace中,可以形成逻辑上的隔离,以方便不同的资源进行隔离使用和管理。不同的命名空间可以存在同名的资源,命名空间为资源提供了一个作用域。

可以通过k8s的授权机制,将不同的namespace交给不同的租户进行管理,这样就实现了多租户的资源隔离,还可以结合k8s的资源配额机制,限定不同的租户能占用的资源,例如CPU使用量、内存使用量等等来实现租户可用资源的管理。

pod资源控制器类型有哪些

   Deployments:Deployment为Pod和ReplicaSet提供声明式的更新能力。
   ReplicaSet:ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的Pod的可用性。
   StatefulSets:和Deployment类似,StatefulSet管理基于相同容器规约的一组Pod。但和Deployment不同的是,StatefulSet为它们的每个Pod维护了一个有粘性的ID。这些Pod是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个Pod都有一个永久不变的ID。
   DaemonSet:DaemonSet确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,也会为他们新增一个Pod。当有节点从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。
   Jobs:Job会创建一个或者多个Pod,并将继续重试Pod的执行,直到指定数量的Pod成功终止。随着Pod成功结束,Job跟踪记录成功完成的Pod个数。当数量达到指定的成功个数阈值时,任务(即Job)结束。删除Job的操作会清除所创建的全部Pod。挂起Job的操作会删除Job的所有活跃Pod,直到Job被再次恢复执行。
   Automatic Clean-up for Finished Jobs:TTL-after-finished控制器提供了一种TTL机制来限制已完成执行的资源对象的生命周期。TTL控制器目前只处理Job。
   CronJob:一个CronJob对象就像crontab(crontable)文件中的一行。它用Cron格式进行编写,并周期性地在给定的调度时间执行Job。
   ReplicationController:ReplicationController确保在任何时候都有特定数量的Pod副本处于运行状态。换句话说,ReplicationController确保一个Pod或一组同类的Pod总是可用的。

公有云、私有云、混合云

什么是公有云、私有云、混合云 ,这篇文章终于讲清楚了

科普:什么是公有云、私有云和混合云?

公有云私有云区别、对比

一句话说出你对云计算的理解

sed awk

一、有文件file1
1、请用shell查询file1 里面空行的所在行号

grep  ^$ file1

awk ‘{if($0~/^$/)print NR}’ file
or
grep -n ^$ file |awk ‘BEGIN{FS=”:”}{print $1}’

2、编写ShellScript查询file1 以abc 结尾的行
grep abc$ file1

3、打印出file1 文件第1 到第3 行
sed -n ’1,3p’ file1
head -3 file1

进程类型

Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。

  1. 交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。

  2. 批处理进程和终端没有联系,是一个进程序列。

  3. 监控进程(也称系统守护进程)是Linux系统启动时运行的进程,并常驻后台。例如,httpd是著名的Apache服务器的监控进程。 Linux系统进程类型有哪些?进程状态有哪几种?常见的进程有哪些?

传输

5种传输文件的服务
rsync scp sftp ftp samba rcp

对现在运维工程师的理解和以及对其工作的认识

你对现在运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务

运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失

因此运维工程师的工作需要严谨及富有创新精神

系统调优 系统调优包括内核参数优化和应用优化2 个方面

系统调优方面包括哪些工作 以linux为例子 并举一些参数


系统调优包括内核参数优化和应用优化2 个方面

性能调优是在出现问题后或者瓶颈后才需要调整,不要一味的盲目调节,否则只会适得其反。

更新默认内核参数设置

net.ipv4.tcp_tw_reuse = 1 
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
 
net.ipv4.tcp_tw_recycle = 1 
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

net.ipv4.tcp_syncookies = 1 
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
 
net.ipv4.tcp_tw_reuse = 1 
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
 
net.ipv4.tcp_tw_recycle = 1 
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

kern.maxfiles: 1928 
系统中支持最多同时开启的文件数量,如果你在运行数据库或大的很吃描述符的进程,那么应该设置在20000以上, 
一般推荐设置为32768或者65536


禁用不必要的守护进程,节省内存和CPU资源
chkconfig cups off


打开系统最大连接数上限

echo "*	soft	nproc	10240" >>/etc/security/limits.confecho "*	hard	nproc	16384" >>/etc/security/limits.conf
echo "*	soft	nofile	10240" >>/etc/security/limits.confecho "*	hard	nofile	65535" >>/etc/security/limits.conf




关闭ssh服务DNS反向解析

sed -i '/\#MaxAuthTries 6/a\MaxAuthTries 6' /etc/ssh/sshd_configsed -i '/\#UseDNS yes/a\UseDNS no' /etc/ssh/sshd_config

CentOS 7 系统优化分析

Linux内核参数优化

Linux内核调优参数说明

https://www.bbsmax.com/A/WpdKgOwZdV/

值得收藏的20个Linux服务器性能优化技巧

https://blog.csdn.net/21aspnet/article/details/6584792


https://www.cnblogs.com/weifeng1463/p/6825532.html

Centos 性能调优 - tuned 服务

Linux系统调优


查看当前文件夹(有文件夹) 下文件名包含test的文件的大小和总和

TCP

面试官】大白话回答面试官TCP三次握手、四次挥手,其实也是可以过滴

如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
Iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp –dport 80 -j DNAT -to-destination 192.168.2.1:8080

crontab

crontab
在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么
实现
0 6-12/2 * 11 * /usr/bin/httpd.sh 

mv /tmp

四、编写个shell 脚本将/usr/local/test 目录下大于100K 的文件转移到/tmp 目录下
#!/bin/bash
for file in `ls /usr/local/test`
do
if [ -f $file ]; then
if [ `ls -l $file|awk '{print $5}'` -gt 10000 ]; then
mv $file /tmp/
fi
fi
done


#!/bin/bash
def=30
dir=/data/1/
dir2=/data/2/
for i in `ls -l $dir|awk '{print $9}'`
do
size=`du -shm ${dir}|awk '{print $1}'`

if [[ $size -gt $def ]] ;
then
mv ${dir}/$i ${dir2}
fi

done


 

shell 多线程 ?

#!/bin/bash
temp_fifo_file=$$.info
mkfifo $temp_fifo_file
exec 6<>$temp_fifo_file
rm $temp_fifo_file

function f_sleep
{
sleep 2
}
temp_thread=3

for ((i=0;i<temp_thread;i++))
do
echo
done >&6

for ((i=0;i<6;i++))
do
read
{
f_sleep
echo $$,$i, `date`
sleep 5
echo $$,$i, `date`

}&
 echo >&6
done <&6


wait
exec  6>&-

<<COMMENT
14491,3, 2018年 08月 17日 星期五 11:47:27 CST
14491,0, 2018年 08月 17日 星期五 11:47:27 CST
14491,2, 2018年 08月 17日 星期五 11:47:27 CST
14491,4, 2018年 08月 17日 星期五 11:47:27 CST
14491,1, 2018年 08月 17日 星期五 11:47:27 CST
14491,5, 2018年 08月 17日 星期五 11:47:27 CST
14491,0, 2018年 08月 17日 星期五 11:47:32 CST
14491,2, 2018年 08月 17日 星期五 11:47:32 CST
14491,4, 2018年 08月 17日 星期五 11:47:32 CST
14491,1, 2018年 08月 17日 星期五 11:47:32 CST
14491,3, 2018年 08月 17日 星期五 11:47:32 CST
14491,5, 2018年 08月 17日 星期五 11:47:32 CST
COMMENT

用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20

centos6 centos7 区别

启动加载器
 Sysv init  systemd

文件系统
 ext4  xfs
 
 内核版本
 2.6    3.10

防火墙
iptables firewalld

写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线

方法-

#!/bin/bash
for ip in `seq 1 255`
do
{

ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait 

方法二

 nmap -sn 192.168.1.0/24

统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
筛选ip的,uniq前边应该还有一个sort,不然去重毫无意义还会造成错误数据。

cat access.log | awk '{print $1}' |sort | uniq -c | sort -rn | head -10


tomcat配置文件server.xml



Linux proc目录详解

shell-判断一个目录是否存在

 if [ ! -d $_DIRECTORY_NAME ]

shell-判断一个目录是否存在,不存在是否创建

shell脚本变量特殊字符的含义

1:$# 表示执行脚本传入参数的个数

2:$*  表示执行脚本传入参数列表

3:$$ 表示进程id

4:$@表示执行脚本传入所有参数

5:$0 表示执行脚本名称

6:$1 表示第一个参数

7:$2 表示第二个参数

8:$? 表示脚本执行状态0正常,其他表示有错误

shell脚本变量特殊字符的含义

LVS的优点和缺点

LVS的缺点是:
1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了
3.多年没更新

LVS的优点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会受到大流量的影响。
5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

http://www.yunwei321.com/a/fwqyw/linux/2017/1030/460.html

linux分析apache日志获取最多访问的前10个IP

当前WEB服务器中联接次数最多的ip地址

#netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr

 

查看日志中访问次数最多的前10个IP

#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less

 

查看日志中出现100次以上的IP

#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if (1>100)print

0}'|sort -nr |less

查看最近访问量最高的文件

#cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less

 

查看日志中访问超过100次的页面

#cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if (1>100)print

0}' | less

 

统计某url,一天的访问次数

#cat access_log|grep '12/Aug/2009'|grep '/images/index/e1.gif'|wc|awk '{print $1}'

 

前五天的访问次数最多的网页

#cat access_log|awk '{print $7}'|uniq -c |sort -n -r|head -20

 

从日志里查看该ip在干嘛

#cat access_log | grep 218.66.36.119| awk '{print 1"\t"

7}' | sort | uniq -c | sort -nr | less

 

列出传输时间超过 30 秒的文件

#cat access_log|awk '($NF > 30){print $7}' |sort -n|uniq -c|sort -nr|head -20

 

列出最最耗时的页面(超过60秒的)

#cat access_log |awk '(NF > 60 &&
7~/\.php/){print $7}' |sort -n|uniq -c|sort -nr|head -100

linux分析apache日志获取最多访问的前10个IP

说说TCP/IP的七层模型

应用层 (Application):

网络服务与最终用户的一个接口。

协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

 

表示层(Presentation Layer):

数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)

格式有,JPEG、ASCll、DECOIC、加密格式等

 

会话层(Session Layer):

建立、管理、终止会话。(在五层模型里面已经合并到了应用层)

对应主机进程,指本地主机与远程主机正在进行的会话

 

传输层 (Transport):

定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

 

网络层 (Network):

进行逻辑地址寻址,实现不同网络之间的路径选择。

协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

 

数据链路层 (Link):

建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)

将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正

 

物理层(Physical Layer):

 

是计算机网络OSI模型中最低的一层

物理层规定:为传输数据所需要的物理链路创建、维持、拆除

而提供具有机械的,电子的,功能的和规范的特性

 

简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层

物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础

物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境

如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”


31、你常用的Nginx模块,用来做什么

rewrite模块,实现重写功能

access模块:来源控制

ssl模块:安全加密

ngx_http_gzip_module:网络传输压缩模块

ngx_http_proxy_module 模块实现代理

ngx_http_upstream_module模块实现定义后端服务器列表

ngx_cache_purge实现缓存清除功能


32、请列出你了解的web服务器负载架构

Nginx

Haproxy

Keepalived

LVS


33、查看http的并发请求数与其TCP连接状态

 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

 

还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024

不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个:

修改/etc/security/limits.conf

* soft nofile 10240

* hard nofile 10240


linux运维面试题目

高性能高并发 面试

高性能高并发 面试

运维文档编写注意事项

1、提出改造需求

       性能问题暴露:当前访问量增大导致服务器压力过大,偶尔有负载报警
       架构不合理存在隐患

2、分析当前架构

       可以用“亿图”画架构图

3、分析业务特点

       当前数据量多少?未来1-3年数据量?
       性能要求高不高?
       实时性要求搞不高?

4、最终改造目的

       改造的最终目的是什么,能提升多少效率?最好有测试报告增强说服力

5、提出至少两种改造方案,表明倾向某一种!

       提出方案时不要让领导做问答题,让他做选择题

6、实施人员及实施时间

       注重团结,参与项目的人员都要提出

参考

最新整理的运维工程师面试真的太给力了,整整50道

Linux运维面试题都不会,怎么拿Offer?

Linux高级运维工程师:100道面试题整理

总结一下:运维工程师面试的经历及面试相关问题

Linux运维跳槽必备面试题

Linux运维跳槽必备的40道面试精华题(转)

Linux运维跳槽必备的40道面试精华题

Linux面试题(2020最新版)

Linux运维常见面试题

运维开发面试题整理

百度linux运维开发工程师面试真题经历+试题

IT从业人员求职面试经验

【MySQL】20个经典常用面试题


面试中如何介绍自己做过的运维项目

运维工作5年简历写出这样大神呀

去外包公司的伙伴们小心了!——亲身经历,数数外包公司的坑