面试
simao.wang
这个作者很懒,什么都没留下…
展开
-
临时抱佛脚系列
1.JVM调优对JVM内存的系统级调优主要目的是减少GC频率和Full GC的次数。1)监控GC的状态,使用各种JVM工具,查看当前日志,并且分析当前堆内存快照和GC日志,根据实际情况看是否需要优化。2)通过JMX的MBean或者Java的jmap生成当前Heap信息,并使用Visual VM或者Eclipse自带的Mat分析dump文件。3)如果参数设置合理,没有超时日志,GC频率GC耗时都不高,则没有GC优化的必要,如果GC频率很高或者GC时间超过1秒,则必须优化。4)调整GC类型和内存分配,原创 2020-11-12 22:35:03 · 175 阅读 · 0 评论 -
网络安全
1.防范常见的Web攻击1)什么是SQL注入攻击?攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造并在数据库中执行。用户登录时,输入用户名:root,密码:‘’or‘1’=‘1’。如果此时使用参数构造的方式,就会出现select * from user where name =‘root’ and password = ‘’ or ‘1’ = ‘1’。此时不管用户名和密码是什么内容,查询出来的用户列表都不为空。如何防范SQL注入攻击?web端:原创 2020-11-10 16:42:26 · 405 阅读 · 1 评论 -
几率大的杂乱+操作系统
1.Bean的生命周期?1)创建阶段(Created):分配存储空间,构建对象,初始化。2)应用阶段(In Use):对象至少被一个强引用使用着。3)不可见阶段(Invisible):该对象不再被任何强引用持有。4)不可达阶段(UNreached)5)收集阶段(collected):如果该对象重写了finalized()方法,则会去执行方法的终端操作。6)终结阶段(Finalized):等待垃圾回收器对该对象空间进行回收。7)重新分配阶段(De-allocated):所占用的内存空间进行回收或原创 2020-11-07 11:56:01 · 103 阅读 · 0 评论 -
多线程
1.进程和线程的区别?根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。地址空间:同一进程的线程共享本进程的地址空间,而进程之间是独立的地址空间。关系:一个程序至少一个进程,一个进程至少一个线程。2.Thread和Runnable的关系?Thread是实现Runnable接口的类,使得run支持多线程,因为类的单一继承原则,推荐多使用Runnable接口。如果一个类继承Thread,则不适合资源共享;但实现Runnable接口的话,就很容易实现资源共享。Runnab原创 2020-11-04 21:10:30 · 225 阅读 · 2 评论 -
Linux命令
1.显示日期:data2.命令补全或文件补齐:Tab3.中断目前程序:Ctrl+C4.改变权限:chmodu,g,o,a表示user,group,other,all这四种身份的权限;+表示加入,-表示减去,=表示设置;r表示读,w表示写,x表示执行;4读2写1执行。例如:chmod u+rwx5.目录.表示当前目录;…表示上一层目录;—表示上一个工作目录;~表示当前用户身份所在的主文件夹。6.切换目录:cdcd 相对路径或绝对路径7.新建目录:mkdirmkdir [-mp] 目原创 2020-10-28 18:07:33 · 52 阅读 · 0 评论 -
MySQL
1.MyISAM和InnoDB有关索引的疑问?MyISAM(非聚集):使用B+树作为索引结构,叶子结点的data域存放的是数据记录的地址。MyISAM中索引检索的算法首先按B+树搜索索引,如果指定的key存在,则取出data域的值,然后以data域的值为地址去读取相应的数据记录。InnoDB(聚集索引):InnoDB的数据文件本身就是索引文件,这棵树的叶节点data域保存了完整的数据记录。但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键在主索引中检索得到记录。因为InnoDB的数原创 2020-10-22 23:48:50 · 165 阅读 · 0 评论 -
SSM框架
1.为什么使用Spring(优缺点)?(1)方便解耦,简化开发(IOC:通过Spring提供的IOC容器,将对象间的依赖关系交由Spring控制,避免过度耦合)(2)AOP编程的支持(Spring提供的AOP功能方便进行面向切面编程)(3)声明式事务的支持(4)方便程序的测试(Spring对Junit4支持,可以通过注解方便调试)(5)方便集成各种优秀框架(Spring不排斥各种优秀的开源框架Struts,Hibernate)2.Spring容器创建对象的时机第一种:默认情况下,Spring在原创 2020-10-08 16:12:06 · 372 阅读 · 0 评论 -
Redis面试题
1.Redis持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过将硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,释放内存。两种持久化方式:1)RDB是Redis默认的持久化方式,按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的原创 2020-10-04 11:18:05 · 89 阅读 · 0 评论 -
JVM面试
JVM面试1.JVM三大性能调优参数-Xss:规定每个线程虚拟机栈(堆栈)的大小-Xms:堆的初始值-Xmx:堆能达到的最大值JVM 几个重要的参数:-server -Xmx3g -Xms3g -XX:MaxPermSize=128m-XX:NewRatio=1 新生代(Eden + 2*S)与老年代(不包括永久区)的比值-XX:SurvivorRatio=8 2个Survivor区和Eden区的比值-XX:+UseParallelGC-XX:ParallelGCThreads=8-X原创 2020-09-29 21:54:11 · 150 阅读 · 0 评论 -
JVM
JVM面试题1.什么情况下会发生栈内存溢出?思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数。答:1.栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型2.如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常,方法递归调用产生这种结果。3.如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够原创 2020-09-28 22:08:54 · 67 阅读 · 0 评论