it面试题库及答案 项目经理考题及答案

前言:一个朋友参加了四轮面试(三轮技术,一轮管理),最后没有谈下一年40万的工作 。虽然在广州很难找到年薪40万的技术岗位,但也不是遥不可及 。分享他遇到的四轮面试问题 。如果你准备充分,我相信你也会降低40w的报价:
四轮面试过程:第一轮:
1.自我介绍
2.innodb和2.mysql的myisan引擎有什么区别?
3.你对3.mysql常用的优化方法有哪些?
4.说说你最近遇到的一个技术问题,你是怎么解决的?
5.说说Java的父委托机制 。
6.谈谈jvm常见的监控命令?
7.Java有几个线程池,你一般用哪个?
8.8.rabbitmq的vhost配置有什么作用?
9.9.docker常用的命令参数有哪些,是什么意思?
10.谈谈你在日常工作中是如何管理员工的 。你自己开发和管理大概的比例吗?第二轮:
1.自我介绍
你在2.java用过什么锁?在什么情况下使用?
3.3.hashmap的实现及其在jdk8中的变化
4.为什么选择nacos作为注册中心,它的特点是什么?
5.当你选择一个技术组件时,你会考虑哪些方面?
【it面试题库及答案 项目经理考题及答案】6.你通常用什么来监控jvm,阿尔萨斯用来检查性能统计的命令是什么?如何监控?
7.你对7.mysql索引有什么深刻的了解,使用时应该注意哪些方面?
8.事务隔离级别为8 。MySQL以及如何实现?
9.你使用过哪些自动化操作和维护工具,詹金斯的构建步骤和流程
10.docker自己写过dockerfile吗,k8s用过吗?
11.你未来的职业规划是什么?第三轮:
1.自我介绍
2.数据库子表过多的设计完成了吗?拆分后会出现什么样的问题?你是怎么解决的?
3.3.redis的数据类型有哪些?你用过什么?如何处理多字段排序?
4.你用过分布式锁吗?如何利用Redis锁避免死锁?过期时间如何保持设置锁的原子性?
5.5.redis存储方式的优缺点是什么?您是否使用过Redis进行数据同步
6.你现在用的微服务拆分原理是什么,是否越细越好?拆得太仔细有什么问题?
7.你有没有开发过一个小程序,告诉我你用什么开发的,这样做的优缺点是什么?
8.如何理解高性能和高并发?对于高性能,您有哪些调优方法?如何处理高并发?
9.单线通信的两个网络,比如1个网络有应用A,2个网络有应用B,只有A可以接入B,那么如何设计让B的通信接入A呢?
10.你采取了哪些网络安全防范措施?如果面对攻击程序?你用过什么抓取工具?使用过哪些压力测量工具?具体使用步骤.第四轮:
1.自我介绍
2.换工作的原因,你之前做过什么业务,你对这种类型的业务熟悉吗,你觉得哪个更重要?
3.当你去一个新的团队做管理时,你将如何开始工作
4.你使用过什么软件进行发展规划?
5.未来的职业规划是什么?
6.你如何评价自己?
7.你的薪资要求是什么?可以商量吗?只谈年度套餐,okr考核
8.你结婚了吗?你打算什么时候结婚?你打算什么时候生孩子?
9.你对新环境有什么期望?
10.入境时间、居住地、是否定居等一般信息
后述:其实这位朋友告诉我,当我谈到第四轮的时候,我觉得非常接近 。我开了一年40万元的套餐,比现在的总额高了7w左右 。其实基本上就是跳槽加薪20%左右 。可能上一轮我回答的问题触及了面试官的禁区,所以我也警告朋友们不要放松到最后一刻 。最近,我花时间整理了一些第一个问题的答案 。
一面答案:一、自我介绍
1.介绍你的基本信息,重点是教育 。如果香港的企业会说粤语,也可以介绍一下你是哪里人 。
你好,面试官 。我叫马农阿三 。我20XX年毕业于XXXX学校 。我主修计算机科学,在大学里学习java作为我的语言 。(告诉他,我从大学就开始在java工作,出生在专业班 。毕业时间可以让他知道你工作了多少年 。)
2.介绍一下自己的工作经历,毕业后做什么工作,什么时候换工作,在哪里换工作 。如果你有突出的成就,你可以专注于你在相应公司的职位 。
毕业后我也一直从事java软件开发(告诉他我们没有换业务 。
,经验多少年是实打实的),毕业之后我就在XXX上班,在这家公司呆了两年左右,大概在2015年的时候来到B公司,在这里大概呆了三年,后来到了C公司,然后一直干到现在,在这几家公司里面接触的业务toc比较多,从业务上看接触的行业都有商城、小程序、统计分析等类型的系统(介绍自己接触过哪些行业的业务,有时候你一个一个公司介绍你干的是啥,面试官会直接听走神,可以自己总结一下做过哪些行业的业务,让他一下子抓住关注的点,房地产、政府、电信、银行、商城等等)
3.介绍自己擅长的技术
由于工作年限较长,去到的公司都是要求掌握全栈一些的,所以前后端都会一些,前端包括之前比较老一点的jquery、extjs这类型的技术都有用过,包括后来流行的bootstrap,现在的vue都有跟进学习(突出自己没用因为工作时间长没更新自己的技术栈,如果有老系统需要改造的你的老技术也是一个加分项),后台从之前的XXX到XXXXXXXXXXXXXXXXXXX等等介绍下去
其实技术岗就从这三点入手就可以了,说话语速比较平缓,不要太着急,好多人面试有点小紧张语速比较急促,我觉得面试也是个双向选择,木有必要太过于拘谨,平和的和他们对话即可;自我介绍的时候不要过分表现对贵公司非常关注或者看起来提前准备了很多东西一样,有的人自我介绍结尾的时候会说:我面试之前看了贵公司的发展策略,走的是XXX路线........
二、mysql的innodb和myisan引擎的区别?
1.新版本的mysql默认存储引擎是innodb,旧版本的mysql默认存储引擎是myisam
2.锁的区别,innodb支持行级锁,myisam的是表锁,但是在innodb加锁过程是通过索引来加锁,如果没有索引,此时innodb锁住的是表锁
3.事务的区别,myisam类型的表强调的是性能,其执行速度比innodb类型更快,但是不提供事务支持,innodb提供事务支持事务,这个也是为啥后面改成innodb作为默认引擎,大部分数据持久化都需要事务来保证
4.存储的区别,每个myisam在磁盘上存储成三个文,.frm文件存储表定义,数据文件的扩展名为.MYD
MYData
,索引文件的扩展名是.MYI
MYIndex
。innodb是两个文件,.frm文件存储表定义,索引和数据文件都存储在.ibd文件里面
5.外键,myisam不支持外键,innodb支持外键
6.查询效率,myisam使用select count时查询总数时是有单独为维护总行数的,innodb则不维护总行数去遍历,myisam比较适合多查询少插入修改的场景,innodb适合有强一致性的事务操作,比较多修改、删除等操作的
7.索引
InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高 。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据 。因此,主键不应该过大,因为主键太大,其他索引也都会很大 。
MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针 。主键索引和辅助索引是独立的 。
也就是说:InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针
其实这个面试题老生常谈的,但是作为一个高级工程师,应该尽可能多维度地回答得全面一点,而不是像初中级的只知道一两点,如果可以尽可能结合自己平常的使用来说,可以附上描述自己在什么时候会考虑使用MyISAM,随着版本的更新,innodb其实很多功能都已经把Myisam的实现过来了,类似全文检索、压缩表等都已经有了实现,所以主推还是使用innodb 。
三、mysql的你常用的优化手段有哪一些?
其实这个问题比较开放性,题目稍大,不怕出题者刁钻,就怕出题者说的问题面试者都不知道方向,mysql的优化要拆分,最常也是场景最多的查询优化,但是也不要忘了插入修改的优化,还是那句话,尽可能的详细,把自己知道的都说一遍 。
1.索引,索引是mysql最常使用的优化手段了,像索引可以提高查询效率
聚簇索引和辅助索引
覆盖索引(减少回表)
索引下推(ICP)
唯一索引
留意不走索引的情况,如like、重复性高的字段、负向查询等情况
2.主键设计尽可能短且有序
主键设计的短,是为了让索引的叶子节点尽可能存放更多主键,因为innodb中索引的叶子节点存放的是主键,然后根据主键进行回表(myisam存放的是数据地址),有序主键可以减少也分裂的情况 。
3.长事务优化
对于长事务应该优化成小事务,减少长事务的发生,长事务会导致大量的等待,阿里巴巴开发手册倡议join的时候不要超过3张表,对于在线事务处理的系统,还是应该遵循此手册,同时可以描述一下相关的锁粒度的优化 。
4.存储引擎的选择
mysql中有丰富的引擎组件,应该根据业务场景选择对应的引擎,当然innodb的功能也越来越完善,但是业务场景与引擎还是有很多选择的
4.1.InnoDB存储引擎:支持事务处理、支持崩溃修复能力、支持并发控制
使用场景:关联性强的业务,如银行,售票等
4.2.MyISAM存储引擎:插入数据快,空间和内存使用比较低
使用场景:报表系统
4.3.MEMORY存储引擎:所有的数据都在内存中,数据的处理速度快
场景:临时表、计算结果、统计值、中间结果
4.4.ARCHIVE存储引擎:压缩数据存储,减少磁盘占用空间,查询减少磁盘io,比myisan还小
Archive表可以方便地移植到新的MySQL环境,你只需将保存Archive表的底层文件复制过去就可以了
场景:归档数据,固化数据
4.5.csv存储引擎:可以直接拿到表csv文件用来下载,传输,可以直接把csv电子表格直接映射到mysql
使用场景:系统交换数据的中间临时表
4.6.BLACKHOLE存储引擎:不存储任何数据,只有日志生成
使用场景:一主多从架构时,防止master网络消耗太大,可以设计一个代理实例,所有表都用BLACKHOLE存储引擎,代理服务器就不会存储任何数据,代理服务器从主服务器同步数据,其它slave从代理服务器同步,可以减少master的压力,永远只有一个同步,网络压力都在代理服务器上
4.7.FEDERATED存储引擎:不用同步远程表数据
使用场景:跨库连接查询
5.压缩表
对于较多场景可以进行压缩加快查询速度,innodb在5.7版本也是可以进行压缩的,还减少了存储空间
6.参数调整
调整系统设置参数,减少不必要的监控,如调整连接、Io线程、join_buffer_size等
系统参数要在自己非常了解系统业务和mysql的结构下来进行,否则会适得其反 。
7.大表进行分表
当遇到大表的时候进行分区或者分表,建议分表,mysql的每个分区对应操作系统下的一个文件,如果查询大表时,有可能造成大量的文件打开,会有一定程度出现问题,分表又涉及到其逻辑,可以参照oracle的分区方式来阐述,范围分表、列表分表、hash分表 。
8.当单库过大进行分库
有分表自然就有分库,当单点的库压力过大可以进行分库,与之相呼应的就是分布式系统天然分库,当然分库会衍生到其它问题,比如关联查询排序等,这时候可能会阐述的更多相关的知识,比如更多的一些中间件带出 。
9.读写分离
当某个业务高频的查询或者更新时,这种热点业务的处理应该建立读写分离架构,减轻DB的压力,读写分离可以很大程度分流压力,这里面也是涉及到比较多集群模式,MySQL Replication,MySQL Fabirc,MySQL Cluster等
10.借助外部工具来完成同一个业务,例如借助redis第三方组件来做一些缓存,把不经常修改的数据放到缓存中提高查询效率

四.说一说你最近遇到的一个技术难题,你是如何去解决的?
首先这是个比较开放性的问题,也是面试者自己的一个很好的展示机会,因为这个引导的话,接下来聊的内容就是你所熟悉范围的,聊不好刚刚都跑到知识盲区,而面试官还会以为这个是你最熟悉的范畴,就会让面试官感觉你的深度就在这个层次,错失机会 。
像重要的面试,都要给自己设定一个曾经处理过的技术难题,不一定是自己最近的,自己熟悉的就好,因为面试官也不知道你的业务,他也不关心,只关心给你一个舞台,你能给出什么样的表演而已 。
我们可以做一些这样的准备:
1.最近项目准备上一个版本,有性能指标要求,指定要处理核心接口达到100的tps,我们进行了……优化(上线中)
2.最近由于业务发展,需要用到分布式事务,我们引入了xxx框架进行解决,这个框架……(优点缺点都描述一下)(上线前)
3.最近系统线上环境出现了服务oom异常,每次运行一段时间就挂死,我们采取了xxx工具去排查,最后得出结论是什么引起的,以后要注意……(上线后)
这三个例子包含上线前,中,后,方向就是找一个自己记忆深刻,又比较熟悉的领域来说,最好挑选型,疑难杂症排查,性能优化这些方面来说,这几方面是最能体现实力的领域了 。

五.说一下Java的双亲委派机制?
JVM中提供了三层的ClassLoader:BootstrapClassLoader,ExtClassLoader,AppClassLoader;另外用户可以自定义类加载器 。
当一个类加载器收到了类加载请求,它会检查自己是否已经加载,如果没有,它并不会自己先加载,而是把这个请求委托给父类的加载器去执行,同样,这个父类加载器也是检查自己是否已经加载,如果没有,而且还有其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的引导类加载器;如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成加载任务,子加载器才会尝试自己去加载,这就是双亲委派机制;
BootstrapClassLoader:启动类加载器用于加载JDK中$JAVA_HOME/jre/lib下面的那些类,比如rt.jar包里面的类
ExtClassLoader:主要负责加载 jre/lib/ext 目录下的一些扩展的jar 。主要用于加载JDK扩展包里的类 。一般$JAVA_HOME/lib/ext下面的包都是通过这个类加载器加载的,这个包下面的类基本上是以javax开头的
AppClassLoader:主要负责加载应用程序的主函数类 。用来加载开发人员自己平时写的应用代码的类的,加载存放在classpath路径下的那些应用程序级别的类的
用户自定义加载器:java编写,用户自定义的类加载器,可加载指定路径的class文件
双亲委派机制在一定程度上保护了基础类不被开发人员去影响或者篡改,隔离了基础库与用户代码,同时也避免类重复加载 。
而在某些情况下我们需要去打破双亲委派,例如我们最常使用的容器tomcat,它部署多应用的时候就需要去打破双亲委派,防止应用之间出现相互影响,还有类似我们的数据库驱动包,由于java平台是提供Driver接口,而实现是由各大产商自行实现的,那么DriverManager(也由jdk提供)要加载各个实现了Driver接口的实现类,然后进行管理,但是DriverManager由启动类加载器加载,只能记载JAVA_HOME的lib下文件,而其实现是由服务商提供的,由系统类加载器加载,这个时候就需要启动类加载器来委托子类来加载Driver实现,从而破坏了双亲委派j机制 。
1.由于双亲委派是jdk1.2才开始引入的,那么为了兼容之前的的代码,不得不做一些妥协,所以保留一个loadClass 方法向前兼容,利用这个方法可以打破双亲委托机制 。
2.另外一个是线程上下文类加载器(Thread Context ClassLoader),越基础的类由越上层的加载器进行加载,如果基础类又要调用回用户的代码,那怎么办?这上面所说的jdbc的接口在最上层的启动类加载器加载的,而实现需要应用程序去加载,那么加载内容就需要放到线程上下文类加载器,因为java的运行都是通过线程去完成的,所以它可以在jdbc调用具体接口时从线程上下文中获取到实际的实现方法 。
3.OSGi实现模块化热部署的关键则是它自定义的类加载器机制的实现 。每一个程序模块
Bundle
都有一个自己的类加载器,当需要更换一个Bundle时,就把Bundle连同类加载器一起换掉以实现代码的热替换 。在OSGi环境,类加载器不再是双亲委派模型中的树状结构,而是进一步发展为更加复杂的网状结构

六.说一下jvm的常用监控命令?
当岗位到一定程度,问题很多时候都是回到性能优化层面,面试题大部分都是问调优的多,调优前就是要找出程序问题,找就要借助监控工具 。
首先我们可以用arthas来进行jvm监控,arthas提供很好的面板,也可以远程web去看监控信息,这是个很溜的工具,阿里开源的,这个工具要安装完整的jdk才能使用,如果我们只是安装jre运行环境会包一些错误,所以记得安装完整的jdk 。
sysprop:可以打印所有的System Properties信息
dashboard :显示线程、堆,gc所有信息,输入命令之后可显示当前进程的所有线程信息,堆信息,gc信息以及运行程序的底层java版本等信息,这个结果还是动态的,每几秒刷新一下
thread:
thread 指定线程号:针对一个线程占用CPU特别高,我们可以通过这条命令看到这个线程的堆栈信息,以查找问题所在
thread :打印出当前进程的所有线程信息
thread -b:打印出当前进程的所有死锁信息
jad:可以反编译线上的.class文件的字节码,使得我们查看代码是否发布成功
ognl:可以动态的去查阅或者修改线上代码变量的值
另外jdk原生的工具,其实某些情况可能没有安装arthas,又是内网无法直接安装arthas,所以还是得了解jdk自带的工具,常规的命令有如下:
javap: 是JDK自带的反汇编器,可以查看javaicon编译器为我们生成的字节码 。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作(反编译)
jcmd:查看系统中类统计信息,堆信息,系统Properties内容,获取启动参数,获取所有性能相关数据PerfCounter.print,查看直接内存信息,查看CompressedClassSpace大小(查看性能参数经常用到)
jstat:详细查看堆内各个部分的使用量,以及加载类的数量 。使用时,需加上查看进程的进程id,和所选参数 (查看gc详细情况用到)
jstack:输出的线程信息主要包括:jvm自身线程、用户线程等 。其中jvmicon线程会在jvm启动时就会存在 。对于用户线程则是在用户访问时才会生成(查找死锁经常使用到)
jps:查看当前java进程
jinfo:可以打印出java进程的配置信息:包括jvm参数,系统属性等
jmap:内存映像信息,jmap -heap pid 可以查看分代的内容情况
jhat:这个东西是用分析dump文件 (可以有jmap、jconsole、hprof 等导出的dump文件),离线分析,分析时会启动一个webserver,还支持使用对象查询语言
JConsole(jvisualvm):基本包括以下基本功能:概述、内存、线程、类、VM概要、MBean,可以远程连接java进程,提供了可视化界面,jvisualvm与JConsole大同小异 。
其它还有:jdb、javah 、jsadebugd、jrunscript、jstatd 等等,只是可能比较少用,有兴趣的可以自行查阅资料看看 。
其实不管是arthas还是jdk自带的工具,都是基于jvmti里面的来进行封装的,对于jvmti可以在oracle官网下载界面进到相关的文档链接可以看到,如果想深入了解还是多看官方文档,但是jvmti提供的都是c和c++的接口,看起来会比较吃力,但是基本可以知道jvmti是jvm里面做了挺多埋点监控,提供了丰富的接口,让我们上层的应用人员可以有方法可以查看到jvm里面的一些信息和了解它的一些原理,从而可以根据这些信息进行调优,这是我们上层人员精力有限的情况下能做到的层面了吧,如果我们想分析更详细的gc日志,可以在启动的时候指定gc日志输出,然后使用gcview或者gceasy等手段进行分析 。

7.Java的线程池有几种,你平常都使用哪一些?
java中一共有newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool,newScheduledThreadPool,newSingleThreadScheduledExecutor,ForkJoin六种线程池 。
由于在newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool,newScheduledThreadPool,newSingleThreadScheduledExecutor五个都是基于底层都是ThreadPoolExecutor简单封装了来使用的,其实最好还是自己基于ThreadPoolExecutor来进行使用,避免使用的上层而不知道底层的使用方式,排查问题一步到位,所以通常建议都是使用ThreadPoolExecutor而尽可能少直接使用封装好的线程池 。
ThreadPoolExecutor构造函数一共有:
corePoolSize:指定了线程池中的线程数量,它的数量决定了添加的任务是开辟新的线程去执行,还是放到workQueue任务队列中去;
maximumPoolSize:指定了线程池中的最大线程数量,这个参数会根据你使用的workQueue任务队列的类型,决定线程池会开辟的最大线程数量;
keepAliveTime:当线程池中空闲线程数量超过corePoolSize时,多余的线程会在多长时间内被销毁;
unit:keepAliveTime的单位
workQueue:任务队列,被添加到线程池中,但尚未被执行的任务;它一般分为直接提交队列、有界任务队列、无界任务队列、优先任务队列几种;
threadFactory:线程工厂,用于创建线程,一般用默认即可;
handler:拒绝策略;当任务太多来不及处理时,如何拒绝任务;
(1)任务队列,它一般分为直接提交队列(SynchronousQueue )、有界任务队列(ArrayBlockingQueue )、无界任务队列(LinkedBlockingQueue )、优先任务队列(PriorityBlockingQueue)
(2)拒绝策略,
1、AbortPolicy策略:该策略会直接抛出异常,阻止系统正常工作;
2、CallerRunsPolicy策略:如果线程池的线程数量达到上限,该策略会把任务队列中的任务放在调用者线程当中运行;
3、DiscardOledestPolicy策略:该策略会丢弃任务队列中最老的一个任务,也就是当前任务队列中最先被添加进去的,马上要被执行的那个任务,并尝试再次提交;
4、DiscardPolicy策略:该策略会默默丢弃无法处理的任务,不予任何处理 。当然使用此策略,业务场景中需允许任务的丢失;
(3)ThreadPoolExecutor的扩展
扩展主要是围绕beforeExecute()、afterExecute()和terminated()三个接口实现的,
1、beforeExecute:线程池中任务运行前执行
2、afterExecute:线程池中任务运行完毕后执行
3、terminated:线程池退出后执行
通过这三个接口我们可以监控每个任务的开始和结束时间,或者其他一些功能
通常线程池的现成参数也有个大概规律,对Io密集型的线程池使用2n(cpu核心数)+1,对于计算型的采取n+1的设置方式,但是具体调整其实还是应该结合业务来尝试和调整 。

8.rabbitmq的vhost配置有什么作用?
主要考量面试者对于第三方组件的一个认识程度,现在的架构都会用上各种各样的组件,mq是其中很常用的一个中间件了.
vhost 可以理解为虚拟 broker,即 mini-RabbitMQ server 。其内部均含有独立的 queue、exchange 和 binding 等,但最最重要的是,其拥有独立的权限系统,可以做到 vhost 范围的用户控制 。当然,从 RabbitMQ 的全局角度,vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的 vhost 中) 。
当在RabbitMQ中创建一个用户时,用户通常会被指派给至少一个vhost,并且只能访问被指派vhost内的队列、交换器和绑定,vhost之间是绝对隔离的 。
其实就看你对rabbitmq的认识,这次可能是问vhost的作用,下次可能就是问如何保证消息不都是 。

9.docker常用的命令参数都有哪些,各自代表了什么意思?
docker命令那么多,大概说一下自己用docker部署一个新应用时用到的命令即可
docker search:查找镜像
docker pull:拉取镜像,可以指定版本
docker run:运行镜像,docker的核心命令
-d表示后台运行,默认是退出命令就退出运行
-m表示指定内存上限,防止容器占用过高内存
-v表示宿主与容器内部的目录挂载,好多时候出现要把容器里面应用日志输出到对应地方
--network表示指定网络,类似elk这些组件要组合一个网来抽数的常用
--cpuset:设置CPU资源,可以设定固定的核心数处理该容器,如--cpuset=0,1就是使用第一第二个核心数处理该容器
-name:指定容器名
-p:指定端口映射,容器内部端口映射到宿主上
-i: 以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
docker exec -it 容器名 bash:进入容器内部命令,容器内部很多常规的Linux名木有,可能存在要重新安装这些操作
docker ps:查看运行中进程,带-a可以查看所有容器
docker stop 容器名或者id:停止容器
docker start 容器名或者id:启动容器
docker restart 容器名或者id:重启容器
docker rm 容器名或者id:删除容器
docker rmi 镜像id:删除镜像
docker logs 参数 容器id
-f follow 表示实时显示日志
-t timestamp 表示显示时间戳
--tail=n 或 --tail n 表示显示末尾n行
例如:docker logs -f --tail=200 xxxx,表示实时加载日志信息,并且仅显示最后200行 。
docker 接触不深,基本上述的命令和参数是自己实战中用过的 。

十.聊一下你平时工作如何管理底下的员工?你自己开发与管理大概比例?
1.团队梯队人员的建设,一个团队里面不可能只有高级工程师,应该是高级中级初级甚至实习生都有,此时自己应该有一个培养人的思维,团队不可能只靠着一个人拉着一个团队向前跑的,要让团队有张弛的力度去处理问题,大概可以描述一下用中级和高级去带初级和实习生的放生,中间描述如果自己管理经验比较少的,可能要提前准备准备,如果已经带团队多年的其实张口就能来了 。
2.如果提高团队的积极性,在一个团队里面高级往往是积极性最低的,如果自己是比高级有更多的技术经验,可以偶尔提点一下,如果高级的技术大体上在自己至上的要想办法多进行语言鼓励,探索性的技术使用可以多让高级去尝试,满足其技术高超的一个自我感觉良好的状态,多以鼓励引导为主,对于初级多点练习和进行定期咨询跟进,让他有立竿见影的感觉,初级尽量以熟悉框架和能根据指引完成功能开发为主,中级应该自己的关注度最高,能自己带领的同事安排多一些活在中级中完成,因为中级才是团队的基础 。
3.根据个人性格来进行针对性管理,对于懒惰或者有强依赖性的组员如何去纠正他的习惯,让他回到正轨上来,结合公司架构,如果是平衡矩阵式或者弱矩阵式的管理多与员工打成一片,如果是职能型应该花更多的心思在计划和跟进计划为主 。
4.绩效考核,技术岗的绩效考核大多依赖工作量以及员工的积极程度,如果公司有绩效考核制度可以集合酌情处理,但是大多数的技术管理者都是无权直接处理下属的薪水问题,更多是通过升级沟通流程来完成一些问题处理和提交报告到上级来处理 。
自己开发和管理的占比,其实如果真的是技术岗位偏多的话,都是回答7-3分即可,因为技术才是最重要的技能,管理软技能是辅助作用,如果面试的是项目经理那就另说,可能更多的是沟通和处理客户、团队、公司内部横跨部门等事情 。