面试--JVM篇
Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境)
JVM有哪些部分组成,运行流程是什么?
JVM组成什么是程序计数器?程序计数器:线程私有的,内存保存字节码的行号。用于记录正在执行的字节码指令的地址
详细介绍java堆?线程共享的区域主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法在扩展时,则抛出OutOfMemoryError异常
java7和java8的jvm内存结构区别
你能给我详细介绍java堆吗?
什么是虚拟机栈?Java Virtual machine Stacks(java虚拟机栈)
每个线程运行时所需要的内存,称为虚拟机栈,先进后出
每个栈有多个栈帧(frame)组成,对应着每次方法调用时所占用的内存
每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
垃圾回收是否涉及栈内存?垃圾回收主要指堆内存,当栈帧弹栈以后,内存就会释放
栈内存分配越大越好吗?未必,默认的栈内存通常为1024k栈帧过大会导致线程数变少,例如,机器总内存512m,目前能活动的线程数则为512个,如果把栈内存改为2 ...
面试--redis篇
Redis-使用场景
如果发生了缓存穿透、击穿、雪崩,该如何解决?
缓存穿透查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存中,导致每次请求都查数据库
解决方案
缓存空数据,查询返回的数据为空,但仍将这个空结果缓存到redis中
优点:简单
缺点:消耗内存,可能会发生不一致的问题
布隆过滤器
优点:内存占用较少,没有多余key
缺点:实现复杂、存在误判
布隆过滤器原理
误判率:数组越小误判率就越大,数组越大误判率越小
缓存击穿给某一个key设置了过期时间,当key过期的时候,恰好这个时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮
解决方案
互斥锁
逻辑过期
缓存雪崩同一时间段大量的缓存key同时失效或者redis服务宕机,导致大量请求到达数据库,带来巨大压力
解决方案
给不同的key的TTL添加随机值
利用redis集群提高服务的可用性 (哨兵模式、集群模式)
给缓存业务添加降级限流策略 (nignx 或者spring cloud gateway)
给业务添加多级缓存 (Guava 或者 Caffein ...
面试--集合篇
复杂度
List为什么数组索引从0开始?从1开始不行吗?
ArrayList源码分析源码基于jdk1.8
成员变量
构造函数
添加和扩容操作
第一次添加数据,自动扩容到10
第2次-10次
第十一次次添加数据-扩容
ArrayList底层的实现原理是什么
ArrayList list = new ArrayList(10)中的list扩容几次
该构造函数只是声明和实例了一个ArrayList,指定了容量为10,未扩容
如何实现数组和List之间的转换
用Arrays.asList转List后,如果修改了数组内容,list受影响吗?受影响
只涉及了引用,没有创建数组
List用toArray转数组后,如果修改了List内容,数组受影响吗?不受影响复制了数组中的内容到新数组中
ArrayList和LinkedList的区别是什么?
底层数据结构
效率
空间
线程是否安全
HashMap
hashmap的实现原理hashmap的数据结构:底层使用hash表数据结构,即数组和链表和红黑树
hashmap的jdk1.7和jdk1.8有什么区别?
hashmap的p ...
面试--mysql篇
Mysql优化在mysql中如何定位慢查询方案一:开源工具
调试工具:Arthas
运维工具:Prometheus,Skywalking
方案二:mysql自带慢日志慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒)的所有SQL语句的日志,如果要开启慢日志查询,需要在myql的配置文件(etc/my.cnf)中配置
如何定位慢查询?
我们当时对一个接口测试的时候非常慢,压测的结果大概是5秒钟当时没有使用运维的监控系统像skywalking之类的,是在mysql中开启了慢查询日志,设置的值是2秒,一旦sql执行超过2秒就会记录到日志中(调试阶段)
参考问答
sql语句执行很慢,如何分析
可以利用explain或者desc命令获取mysql如何执行select语句的信息
sql语句执行很慢,如果分析呢?
可以采用mysql自带的分析工具explain通过key和key_len检查是否命中了索引(索引本身存在是否有失效的情况)通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或者全盘扫描通过extra建议判断,是否出现了回表的 ...
面试--框架篇
spring框架中的单例bean是线程安全的吗?spring框架中的bean默认是单例,
singleton:bean在每个spring IOC容器中只有一个实例
prototype:一个bean的定义可以有多个实例
spring框架中的单例bean是线程安全的吗?不是线程安全的,spring框架中有一个@Scope注解,默认的值是singleton,单例的因为一般在spring的bean中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决
参考问答
什么是AOP?你们项目中有咩有使用AOPAOP应用场景
记录操作日志
缓存处理
spring中内存的事务处理
spring中的事务如何实现
什么是AOP?面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合
项目中有咩有使用到AOP?使用过。spring中的事务是如何实现的?本质是通过AOP功能,对方法前后进行拦截。在执行方法之前开启事务,在执行完目标方法之后根据执行情况提交或者回滚事 ...
hvv(四)
1.超文本传输协议;GET、POST、PUT、DELET T1 GET、POST区别 请求在哪里,body T1.5
2.DNS协议有哪些子域名 当我们遇到第一时间有点蒙圈的问题的时候,可以稍微让面试官给个方向
3.XXE xml外部实体引用 名称:外部实体注入 危害/能干什么:远程连接服务、获取内部信息,file协议读取文件、http协议端口探测、拓展命令执行 分类:有没有回显 漏洞怎么利用/漏洞挖掘点:引用xml,解析excel(漏洞点),怎么构造poc(做延迟、做ddos)
怎么修复:禁止外部实体引用,关键字过滤,升级xml版本
漏洞原理:
怎么绕waf:提出问题
怎么防护:解决问题
xm的格式不够灵活
危害:远程代码执行、任意文件读取、内网存活主机探测
没有回显利用
攻击服务器放置一段构造的DTD文件
监听某一个端口
将payload发送给靶机,查看httplog会有相关回显
4.DNS隧道
原理:当靶机不出网时,可以利用DNS隧道,构造一个恶意域名服务器,当不出网主机请求本地域名服务器没有结果时,会以迭代查询或者 ...
hvv(三)补充
winserver2012 之后如何hashdump
配置注册表并重新登录后才能抓取明文。
撞哈希
vcenter了解吗
查看/sdk/vimServiceVersions.xml可以查看vcenter版本
文件上传漏洞
漏洞检测工具
重置密码获取web控制台权限
获取虚拟机权限
生成快照
ssh连接
redis常见漏洞
未授权访问
写计划任务(一般只能用于centos)
写SSH私钥
写webshell(需要写权限,知道绝对路径)
主从复制RCE
CSRF
就是钓鱼网站,点击携带已经认证的身份去访问另一个网站
MYSQL,SQL SERVER,phpmyadmin提权及其原理MySQL
UDF:自定义函数,加载udf的动态链接库
MOF:上传mof文件,mof文件会被自动执行,winserver 2003
启动项提权:写启动项
竞争条件提权 SQL Server:
xp_cmdshell:
拥有dba权限
依赖xplog70.dll
sp_oacreate:
拥有dba权限
依赖odsole70.dll
使用wscri ...
hvv(三)补充
winserver2012 之后如何hashdump
配置注册表并重新登录后才能抓取明文。
撞哈希
vcenter了解吗
查看/sdk/vimServiceVersions.xml可以查看vcenter版本
文件上传漏洞
漏洞检测工具
重置密码获取web控制台权限
获取虚拟机权限
生成快照
ssh连接
redis常见漏洞
未授权访问
写计划任务(一般只能用于centos)
写SSH私钥
写webshell(需要写权限,知道绝对路径)
主从复制RCE
CSRF
就是钓鱼网站,点击携带已经认证的身份去访问另一个网站
MYSQL,SQL SERVER,phpmyadmin提权及其原理MySQL
UDF:自定义函数,加载udf的动态链接库
MOF:上传mof文件,mof文件会被自动执行,winserver 2003
启动项提权:写启动项
竞争条件提权 SQL Server:
xp_cmdshell:
拥有dba权限
依赖xplog70.dll
sp_oacreate:
拥有dba权限
依赖odsole70.dll
使用wscri ...
hvv(二)
文件上传绕黑白名单
黑名单
不常见的扩展名绕过,比如pht, phpt, phtml, php3,php4,php5,php6
扩展名大小写
apache和iis解析漏洞绕过
白名单
文件包含图片马:在图片中加入一句话木马
00截断:move_uploaded_file方法读取到00会停止,有get00截断和post00截断两种
文件上传监测点在哪
客户端javascript检测(文件后缀名)
服务器客户端检测:禁止对上传的文件目录进行解析,上传的文件随机且检查后缀名
`### 文件上传特征
在文件上传处出现可执行脚本
文件上传加固方法
对上传的文件后缀进行过滤,设置一个白名单
上传后的文件进行重命名,不输出文件保存位置
前期做那些事前期比较重要的就是资产梳理、安全测试、整改加固、安全策略优化、安全意识培训等等
资产梳理:主要协助客户对旗下资产进行梳理汇总
安全测试:组织几次安全渗透测试可分为内外网渗透测试
安全意识培训:宣讲钓鱼邮件防范,个人不使用弱密码,安装杀软等
HW期间下线部分服务器,或者某段时间暂停对外开放服务。
mysql加固呢?(数据库加固)mys ...
hvv(三)
winserver2012 之后如何hashdump修改注册表并重新登陆或者重启后,强制要求lsass.exe缓存明文密码进行抓取
vcenter了解吗
查看/sdk/vimServiceVersions.xml可以查看vcenter版本
文件上传漏洞
远程代码执行漏洞
利用vcenter进入windows系统,第一是使用pe结合shift后门进入系统,缺点是需要重启系统。第二是使用快照,从快照中获取到lsass进程,然后找到hash再登录主机。
漏洞检测工具
重置密码获取web控制台权限
获取虚拟机权限
生成快照
ssh连接
redis常见漏洞
未授权访问
写计划任务(一般只能用于centos)
写SSH私钥
写webshell(需要写权限,知道绝对路径)
主从复制RCE,从服务器初始化时会从主服务器复制全部的数据,但是当它注册的时候,没有对主服务器进行校验,可能有一些恶意文件被加载
svchost.exe如何排查svchost.exe是仅用来启动加载注册表中的dll
先查看其启动路径,是不是C:\Windows\System32,右键查看其承接的服务
注册表 ...