![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试题
ah_hzy
光而不耀,静水流深。
展开
-
请简述什么是事务?事务有哪些属性?
事务是将一系列的sql操作封装在一个单元中,这个单元叫做事务,事务要嘛都做,要嘛不做,事务可以撤销。事务应该具有的四个属性是ACID;A:原子性事务中包括的诸操作要么都做,要么都不做。C:一致性事务应该数据库中数据处于争取的状态。I:隔离性一个事务的执行不应受到其他事务的影响。D:持久性事务是要保存到硬盘的。...翻译 2019-07-03 20:37:29 · 5037 阅读 · 0 评论 -
Java基础面试50题
1、面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继...原创 2019-06-21 00:57:01 · 214 阅读 · 0 评论 -
多线程
两个概念线程 : 就是进程中的一个执行单元 也可以叫执行路径进程 : 正在运行的程序.当一个程序进入到内存中的时候 就有了一个进程进程中至少有一个线程,可以有多个线程,我们把有个线程的程序叫多线程程序进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。进程>线程一个程序至少有一个进程,而一个进程至少有一个线程.面试题:进程和线程的区...原创 2019-06-21 00:55:11 · 97 阅读 · 0 评论 -
IO流
------------------------IO流第一天--------------------------文件:文本文件 字符 字符流其他字节码文件 字节流O:out 输出 write字节流OutputStream : 字节输出流抽象父类|--FileOutputStream 可以操作文件的 将程序中的数据写到文件File中构造: FileOutputStre...原创 2019-06-21 00:53:20 · 120 阅读 · 0 评论 -
File和递归
--------------------------------File,递归------------------------------------File 对应的 是 计算机中的 文件或文件夹需要知道 文件或文件夹的 抽象路径1:构造方法 3个File(String pathname) √根据 路径 的字符串 封装一个File对象File(String parent, ...原创 2019-06-21 00:51:23 · 80 阅读 · 0 评论 -
Java集合
----------------------集合第一天----------------------------集合(Collection)(掌握)集合的由来?我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器 -- 数组而数组的长度固定,所以不适合做变化的需求,Java就提供了集合供我们使用。集合和数组的区别?A:长度区别数组固定集合可...原创 2019-06-21 00:49:38 · 155 阅读 · 0 评论 -
JavaAPI基础
--------------API第一天--------------Object: 它是所有类的超类,祖宗类java中所有的类都直接或间接的继承这个类方法(都要了解)public int hashCode() 返回当前对象的哈希码值,理解为对象的地址值public String toString() 返回当前对象中的内容, 对于Object类默认操作来说,返回的包名....原创 2019-06-21 00:46:42 · 288 阅读 · 1 评论 -
Java基础面试题
java的四个基本特性(抽象,封装,继承,多态),对多态的理解(多态的实现方式)以及在项目中哪些地方用到多态?抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面,抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么.继承:继承是从已有类得到继承信息创建新类的过程,提供继承信息的类被称为父类(超类,基类);得到继承信息的类被称为子类(派生类)继承让变化...原创 2019-06-21 00:43:25 · 111 阅读 · 0 评论 -
JavaWeb基础面试题
JSP中动态include与静态include的区别? 动态include:<jsp:include>,如果包含的是动态页,则先编译之后再进行处理 静态include:<%@include%>,直接将内容先包含后处理 两种跳转方式分别是什么?有什么区别? 服务器端跳转:<jsp:forward>,跳转之后地址栏不改变,可以传递reque...原创 2019-06-21 01:05:28 · 1662 阅读 · 0 评论 -
反射
反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤:1、获得Class对象,就是获取到指定的名称的字节码文件对象。2、实例化对象,获得类的属性、方法或构造函数。3、访问属性、调...原创 2019-06-21 01:07:14 · 96 阅读 · 0 评论 -
数据库主键和外键的作用以及索引的作用,它的优缺点是什么?
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。索引的作用:索引的作用相当于图书...原创 2019-06-21 01:09:39 · 7577 阅读 · 0 评论 -
如何防止SQL注入或攻击?
总结:总的来说,防范一般的SQL注入只要在代码规范上下点功夫就能预防1.使用预编译绑定变量的SQL语句2.严格加密处理用户的机密信息3.不要随意开启生产环境中Webserver的错误显示4.使用正则表达式过滤传入的参数5.字符串过滤6.检查是否包函非法字符一、SQL注入简介SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过...原创 2019-06-18 17:29:20 · 355 阅读 · 0 评论 -
一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)把一条线段分割为两部分,使较大部分与全长的比值等于较小部分与较大的比值,则这个比值即为黄金分割。其比值是(√5-1):2,近似值为0.618,通常用希腊字母Ф表示这个值。附:黄金分割数前面的32位...原创 2019-06-18 17:09:54 · 2800 阅读 · 0 评论 -
进程和线程的区别是什么?
两个概念线程 : 就是进程中的一个执行单元 也可以叫执行路径进程 : 正在运行的程序.当一个程序进入到内存中的时候 就有了一个进程进程中至少有一个线程,可以有多个线程,我们把有个线程的程序叫多线程程序进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。进程>线程一个程序至少有一个进程,而一个进程至少有一个线程.面试题:进程和线程的区别进程和线程的主要...原创 2019-06-18 16:48:43 · 442 阅读 · 0 评论 -
怎样避免和减少数组空指针和越界异常?
避免数组空指针的办法如下:1.变量先初始化,在使用2.使用对象时,先判断再使用,if(对象 != null)3.如String str = null;str.spilt(); 就会报空指针4.对象中的所有属性都会自动添加默认值IndexOutOfBoundsException(数组越界异常) 可以说是Java代码中最常见的异常之一,还有一个是NullPointerException(空...原创 2019-06-18 16:35:11 · 1054 阅读 · 0 评论 -
怎样避免和减少内存泄露?
怎样阻止内存泄露1.使用List、Map等集合时,在使用完成后赋值为null2.使用大对象时,在用完后赋值为null3.目前已知的jdk1.6的substring()方法会导致内存泄露4.避免一些死循环等重复创建或对集合添加元素,撑爆内存5.简洁数据结构、少用静态集合等6.及时的关闭打开的文件,socket句柄等7.多关注事件监听(listeners)和回调(callbacks),比...原创 2019-06-18 16:33:19 · 1384 阅读 · 0 评论 -
在哪种场景下会更倾向于抽象类而不是接口?
首先来讲解下抽象类和接口的异同:相同点两者都是抽象类,都不能实例化。interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。不同点interface需要实现,要用implements,而abstract class需要继承,要用extends。一个类可以实现多个interface,但一个类只能继承一个abstract class。interfac...原创 2019-06-18 16:19:28 · 1920 阅读 · 1 评论 -
Java中会存在内存泄露么?如果存在请举例说明(用伪代码说明)
会。java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。1.集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没有引用了会...转载 2019-06-18 15:17:12 · 790 阅读 · 0 评论 -
sleep()和wait()的区别?
1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()...翻译 2019-07-03 20:36:52 · 242 阅读 · 0 评论 -
MD5是不是一个加密算法,为什么,一般用它来做什么?
MD5:一种哈希算法哈希算法,即 hash,又叫散列算法,是一类把任意数据转换为定长(或限制长度)数据的算法统称。例如我叫张三,你叫李四,那么「人 -> 人名」的算法就叫属于一种哈希算法。哈希算法通常用于制作数字指纹,数字指纹的意思就是「你看到这个东西就像看到原数据一样」,例如我们在一些网站下载大文件的时候,网站提供给我们验证文件完整性的 MD5 或者 SHA1 码,就是原文件的哈希值。...翻译 2019-06-19 01:43:44 · 4977 阅读 · 0 评论 -
https是怎么保证传输过程中的安全的?
1.对称加密2.非对称加密3.数字证书参考链接:HTTPS科普扫盲帖原创 2019-06-19 01:43:53 · 337 阅读 · 0 评论 -
https是怎么保证传输过程中的安全的?
1.对称加密2.非对称加密3.数字证书参考链接:HTTPS科普扫盲帖原创 2019-06-19 01:44:03 · 192 阅读 · 0 评论 -
http协议中常见的get和post以及其它method的区别
1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.(注意对于用户登录来说,get是不安全的,网页直接显示你的用户名和密码)POST方法是把提交的数据放在HTTP包的Body中.2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没...转载 2019-06-19 01:44:13 · 1069 阅读 · 0 评论 -
HTTP状态代码及其作用
下面是不同状态码代表的意思:http状态返回代码 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。http状态返回代码 代码 说明100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。http状态返回代码 2xx (成功)表示成功处理了请...原创 2019-06-23 03:31:48 · 119 阅读 · 0 评论 -
在浏览器中输入一个网址,然后到页面完全显示出来,这期间都发生了哪些事情?
1、查询DNS,获取域名对应的IP。(1)检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时: 如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,...转载 2019-06-22 13:45:59 · 345 阅读 · 0 评论 -
如何实现全站防XSS攻击功能?
总结:利用模板引擎开启模板引擎自带的 HTML 转义功能。例如: 在 ejs 中,尽量使用<%= data %>而不是<%- data %>; 在 doT.js 中,尽量使用{{! data }而不是{{= data }; 在 FreeMarker 中,确保引擎版本高于 2.3.24,并且选择正确的freemarker.core.OutputFormat...转载 2019-06-23 03:31:32 · 811 阅读 · 0 评论 -
实现一个HashMap
public class CustomHashMap<K, V> { private class Entry<K, V> { int hash; K key; V value; Entry<K, V> next; Entry(int hash, K key, V value, Entry<K, V> next) { ...原创 2019-07-03 20:37:21 · 140 阅读 · 0 评论 -
利用javax.servlet.http.HttpServlet实现一个简单的文件上传功能
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setC...原创 2019-06-22 13:49:26 · 778 阅读 · 0 评论 -
linux常用的命令以及它们的参数和使用场景?
linux常用命令和使用场景转载 2019-06-19 01:43:35 · 379 阅读 · 0 评论 -
怎么理解linux中的管道?通过管道能做哪些工作?
“|”是管道命令操作符,简称管道符。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 standard error 信息没有直接处理能...原创 2019-06-19 01:43:25 · 854 阅读 · 0 评论 -
什么时候用assert?
断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试时开启。为了保证程序的执行效率,在软件发布后断言检查通常是关闭的。断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true;如果表达式的值为false,那么系统会报告一个AssertionError。断言的使用如下面的代码所示: 1 ...翻译 2019-07-03 20:37:58 · 450 阅读 · 0 评论 -
GC是什么?为什么要有GC?
GC是垃圾回收的意思,java的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的.原创 2019-07-03 20:37:00 · 1899 阅读 · 0 评论 -
Collection和Collections的区别
1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。Collection├List│├LinkedList│├Array...翻译 2019-07-03 20:37:50 · 158 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.lengthHa...原创 2019-07-03 20:37:10 · 93 阅读 · 0 评论 -
谈谈final、finally、finalize的区别?
final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unl...原创 2019-07-03 20:37:39 · 175 阅读 · 0 评论 -
键盘随意输入一个数字n,计算n的阶乘,用递归实现
//递归实现n的阶乘import java.util.Scanner;public class Factorial1{//实现阶乘的方法——使用递归//要接收一个参数,应该定义参数类型和名字 int i//需要n的阶乘,是一个数字,应该有返回值,返回值类型int public static int factorial(int n){ if(n == 1){ return ...原创 2019-06-19 01:42:46 · 6416 阅读 · 0 评论 -
单例模式的两种实现方式
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。特点:1,一个类只能有一个实例2,自己创建这个实例3,整个系统都要使用这个实例Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。外部资源:譬如每台计算机可以有若干个打印机,但只...原创 2019-06-19 01:42:57 · 955 阅读 · 0 评论 -
十大经典排序算法总结
十大排序算法转载 2019-06-19 01:43:07 · 96 阅读 · 0 评论 -
一个负责处理用户查询交易的系统如果出现Too many open files 可能由哪些问题造成的?
这是因为网络请求过多,也就导致了系统打开的文件过多。每一个连接都会当成“文件”看待的。于是用命令ulimit -a(效果:查看每个用户允许打开的最大文件数)看到最大文件数是1024,将其更改大点,如ulimit -n 4096然后必须重启下网络服务,我用的是WebLogic,重启之后便没有出现异常。导致 Too many open files ,网络请求过多是一种可能,但也有可能是程...原创 2019-06-19 01:43:16 · 325 阅读 · 0 评论 -
java中如何实现多线程操作,写一个多线程的片段.
1:继承Thread类package cn.mld//java中实现多线程的类,继承Thread类(java.lang.Thread)public class MyThread extends Thread{private String title;public MyThread(String title) {this.title=title;} @Override ...转载 2019-06-22 13:46:19 · 844 阅读 · 0 评论