Java面试系列
文章平均质量分 63
为面试准备的笔记
阿杰杰杰のblog
“自律+努力+方法+坚持+时间=优秀”,记录分享自己成长的每一步!
展开
-
Day83-面试前,先自己模拟下这 10 个问题
回答技巧:回答尽量简短,控制在1-2分钟内,先简单的介绍一下自己,说下自己有什么优点,然后介绍下自己过去的一些实习经历。有经验的求职者要突出自己的工作经验,参与过哪些重要的项目和取得的成就等。回答话术:您好,我是毕业于XX大学XX专业的XXX,很高兴能够参加这次面试。回答技巧:这个问题的回答应该简短并且是基于工作要求的。如果是有经验求职者,可以介绍一下这个岗位的责任和义务。原创 2022-12-14 21:30:13 · 405 阅读 · 1 评论 -
Day67-每日一道Java面试题-如何选用集合?为什么要使用集合?
主要根据集合的特点来选用,比如我们需要根据键值获取到元素值时就选用 Map 接口下的集合,需要排序时选择 TreeMap,不需要排序时就选择 HashMap,需要保证线程安全就选用 ConcurrentHashMap。当我们只需要存放元素值时,就选择实现Collection 接口的集合,需要保证元素唯一时选择实现 Set 接口的集合比如 TreeSet 或 HashSet,不需要就选择实现 List 接口的比如 ArrayList 或 LinkedList,然后再根据实现这些接口的集合的特点来选用。...原创 2022-08-27 16:15:00 · 205 阅读 · 0 评论 -
Day66-每日一道Java面试题-说说 List, Set, Queue, Map 四者的区别?
先来看一下 Collection 接口下面的集合。原创 2022-08-26 10:46:14 · 249 阅读 · 0 评论 -
Day65-每日一道Java面试题-HashMap 和 HashSet区别、HashSet如何检查重复
当你把对象加入HashSet时,HashSet 会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的 hashcode 值作比较,如果没有相符的 hashcode,HashSet 会假设对象没有重复出现。如果两者相同,HashSet 就不会让加入操作成功。hashCode() 的默认⾏为是对堆上的对象产⽣独特值。如果没有重写 hashCode() ,即使通过 equals() 判断为相同的两个对象,在加入 HashSet 时,也不会被 HashSet 认为是重复对象。原创 2022-08-24 12:15:00 · 270 阅读 · 0 评论 -
Day64-每日一道Java面试题-HashMap 和 Hashtable 的区别
HashMap 和 Hashtable 的区别。原创 2022-08-23 14:59:05 · 131 阅读 · 0 评论 -
Day63-每日一道Java面试题-try-catch-finally 如何使用?
当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。jvm 官方文档中有明确提到:following:0。原创 2022-08-22 22:34:09 · 274 阅读 · 0 评论 -
Day62-每日一道Java面试题-说说List,Set,Map三者的区别、Arraylist 与 LinkedList 区别?
说说List,Set,Map三者的区别、Arraylist 与 LinkedList 区别?原创 2022-08-21 11:30:00 · 113 阅读 · 0 评论 -
Day61-每日一道Java面试题-获取用键盘输入常用的两种方法
获取用键盘输入常用的两种方法。原创 2022-08-20 09:45:00 · 112 阅读 · 0 评论 -
Day60-每日一道Java面试题-hashCode 与 equals (重要)
当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的 hashcode,HashSet 会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 equals() 方法来检查 hashcode 相等的对象是否真的相同。越糟糕的杂凑算法越容易碰撞,但这也与数据值域分布的特性有关(所谓碰撞也就是指的是不同的对象得到相同的 hashCode。原创 2022-08-19 15:16:14 · 199 阅读 · 0 评论 -
Day59-每日一道Java面试题- == 与 equals的区别(重要)
即,判断两个对象是不是同一个对象**(基本数据类型 = = 比较的是值,引用数据类型 = = 比较的是内存地址)**它的作用也是判断两个对象是否相等。原创 2022-08-18 10:30:00 · 102 阅读 · 0 评论 -
Day58-每日一道Java面试题-接口和抽象类的区别是什么?
1.在 JDK8 中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,则必须重写,不然会报错。2.jdk9 的接口被允许定义私有方法。...原创 2022-08-17 16:56:01 · 115 阅读 · 0 评论 -
Day57-每日一道Java面试题-说一说Java的异常机制
其中,try块用于包裹业务代码,catch块用于捕获并处理某个类型的异常,finally块则用于回收资源。当业务代码发生异常时,系统会创建一个异常对象,然后由JVM寻找可以处理这个异常的catch块,并将异常对象交给这个catch块处理。程序运行时,经常会发生一系列方法调用,从而形成方法调用栈。异常从发生异常的方法向外传播,首先传给该方法的调用者,再传给上层调用者,以此类推。在这种情况下,如果当前方法不知道该如何处理这个异常,可以在方法签名上通过throws关键字声明抛出异常,则该异常将交给JVM处理。..原创 2022-08-16 15:51:51 · 104 阅读 · 0 评论 -
Day56-每日一道Java面试题-重载和重写的区别
重载和重写的区别原创 2022-08-15 16:19:10 · 142 阅读 · 0 评论 -
Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态
Java 面向对象编程三大特性: 封装 继承 多态原创 2022-08-12 16:20:01 · 419 阅读 · 0 评论 -
Day54-每日一道Java面试题-字符型常量和字符串常量的区别?
字符型常量和字符串常量的区别?原创 2022-08-12 15:59:30 · 145 阅读 · 0 评论 -
Day53-每日一道Java面试题-final、finally、finalize的区别?
final用于修饰变量、方法和类。原创 2022-08-09 21:30:00 · 147 阅读 · 0 评论 -
Day52-每日一道Java面试题-Java和C++有什么关系,它们有什么区别?
Java和C++有什么关系,它们有什么区别?原创 2022-08-09 16:57:44 · 131 阅读 · 0 评论 -
Day51-每日一道Java面试题-String、StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
1.可变与不可变。String类中使用字符数组保存字符串,因为有“final”修饰符,所以string对象是不可变的。StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,这两种对象都是可变的。2.是否多线程安全。String中的对象是不可变的,也就可以理解为常量,显然线程安全。StringBuilder是非线程安全的。...原创 2022-08-07 22:56:25 · 179 阅读 · 0 评论 -
Day50-每日一道Java面试题-说一说JDK 、JVM、JRE的区别?
在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解释性语言执行效率低的问题,同时有保留了解释性语言可移植性的特点。所以,Java程序运行时相对来说还是高效的(不过,和C++,Rust ,Go等语言还是有一定差距),而且,由于字节码并不对一种特定的机器,因此,Java程序无需重新编译便可在多种不同操作系统的计算机上运行。我们需要格外注意的是 .class->机器码 这一步。...原创 2022-08-05 15:11:43 · 379 阅读 · 0 评论 -
Day49-每日一道Java面试题-Java语言有哪些特点
Java语言的特点原创 2022-08-04 08:00:00 · 153 阅读 · 0 评论 -
Day48-每日一道Java面试题-面向对象和面向过程的区别
面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,二是Java是半编程原因,最终的执行代码并不是可以直接被CPU执行的二进制机器码。而面向过程原因大多都是直接编译成机器码在电脑上执行,并且其它一些面向过程的脚本语言性能也并不一定比Java好。...原创 2022-08-03 10:46:01 · 134 阅读 · 0 评论 -
Day44-Java面试系列(八)-牛客网Java高频面试题
其中,封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,让外部程序通过该类提供的方法来实现对内部信息的操作和访问,这种做法有助于规范使用者的行为,让使用者只能通过事先预定的方法访问数据,提高了代码的可维护性;-便于修改,提高代码的可维护性使用继承的优点包括-代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性,提高了代码复用-提高代码的可扩展性,很多开源框架的扩展接口都是通过继承父类来完成的但同时继承也有很多缺点-继承是侵入性的。...原创 2022-07-19 10:21:16 · 169 阅读 · 0 评论 -
Day43-Java面试系列(七)- Redis面试专题
缓存击穿跟缓存雪崩有点类似,缓存雪崩是大规模的key失效,而缓存击穿是某个热点的key失效,大并发集中对其进行请求,就会造成大量请求读缓存没读到数据,从而导致高并发访问数据库,引起数据库压力剧增。这种现象就叫做缓存击穿。从两个方面解决,第一是否可以考虑热点key不设置过期时间,第二是否可以考虑降低打在数据库上的请求数量。解决方案在缓存失效后,通过互斥锁或者队列来控制读数据写缓存的线程数量,比如某个key只允许一个线程查询数据和写缓存,其他线程等待。这种方式会阻塞其他的线程,此时系统的吞吐量会下降。...原创 2022-07-15 14:46:20 · 818 阅读 · 0 评论 -
Day42-Java面试系列(六)-MySQL索引连环18问
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。而且索引是一个文件,它是要占据物理空间的。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。比如我们在查字典的时候,前面都有检索原创 2022-07-13 09:33:57 · 200 阅读 · 0 评论 -
Day41-Java面试系列(六)-MySQL基础、锁、事务、分库分表、优化
MySQL 支持多种存储引擎,比如 InnoDB,MyISAM,Memory,Archive 等等.在大多数的情况下,直接选择使用 InnoDB 引擎都是最合适的,InnoDB 也是 MySQL 的默认存储引擎。MyISAM 和 InnoDB 的区别有哪些:char 是一个定长字段,假如申请了的空间,那么无论实际存储多少内容.该字段都占用 10 个字符,而 varchar 是变长的,也就是说申请的只是最大长度,占用的空间为实际字符长度+1,最后一个字符存储使用了多长的空间.在检索效率上来讲,char > v原创 2022-07-13 09:32:12 · 222 阅读 · 0 评论 -
Day40-Java面试系列(六)-MySQL面试(上)
在 MySQL 数据库中,支持上面四种隔离级别,默认的为 Repeatable read (可重复读);而在 Oracle 数据库中,只支持 Serializable (串行化)级别和 Read committed (读已提交)这两种级别,其中默认的为 Read committed 级别。##索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。索引是帮助MySQL高效获取数据的数据结构。当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引能够原创 2022-07-13 09:29:00 · 143 阅读 · 0 评论 -
Day39-Java面试系列(五)-Mybatis面试专题
优点:缺点:Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。相同点:都是对jdbc的封装,都是持久层的框架,都用于dao层的开发。不同点1、映射关系MyBatis 是一个半自动映射的框架,配置Java对象与sql语句执行结果的对应关系,多表关联关系配置简单。Hibernate 是一个全表映射的框架,配置J原创 2022-07-12 08:46:25 · 195 阅读 · 0 评论 -
Day37-Java面试系列(三)-Java并发-进程通信和线程通信的几种方式
可以看出管道传输数据是单向的,如果想相互通信,我们需要创建两个管道才行。管道这种通信方式效率低,不适合进程间频繁地交换数据所谓的管道,就是内核里面的一串缓存。从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。另外,管道传输的数据是无格式的流且大小受限。比如,A 进程要给 B 进程发送消息,A 进程把数据放在对应的消息队列后就可以正常返回了,B 进程需要的时候再去读取数据就可以了。同理,B 进程要给 A 进程发送消息也是如此。消息队列是保存在内核中的消息链表,在发送数据时原创 2022-07-11 10:30:35 · 176 阅读 · 0 评论 -
Day38-Java面试系列(四)-Spring面试专题
Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过 XML,Java 注解或 Java 代码提供。在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由 IoC 容器将它们装配在一起。通常,依赖注入可以通过三种方式完成,即:原创 2022-07-12 08:38:53 · 381 阅读 · 0 评论 -
Day36-Java面试系列(三)-Java并发-多线程基础面试题
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都原创 2022-07-11 10:28:13 · 177 阅读 · 0 评论 -
Day35-Java面试系列(二)-Java集合
Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系。注意:Collection是一个接口,Collections是一个工具类,Map不是Collection的子接口。Java集合框架图如下:图中,List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列原创 2022-07-08 17:13:25 · 210 阅读 · 0 评论 -
Day34-Java面试系列(一)-Java基础(下)
形式上: 字符常量是单引号引起的一个字符,字符串常量是双引号引起的若干个字符;含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置,相当于对象;占内存大小:字符常量只占2个字节;字符串常量占若干个字节(至少一个字符结束标志) (注意: char 在Java中占两个字节)。java中常量池的概念主要有三个:,,。我们现在所说的就是,对这个想弄明白的同学可以看这篇Java中几种常量池的区分。jvm为了提升性能和减少内存开销,避免字符的重复原创 2022-07-08 16:01:04 · 225 阅读 · 0 评论 -
Day33-Java面试系列(一)-Java基础(上)
面向对象(封装,继承,多态);平台无关性,平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。可靠性、安全性;支持多线程。C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持;支持网络编程并且很方便。Java原创 2022-07-08 11:46:57 · 150 阅读 · 0 评论 -
Day24-Redis学习笔记-Redis简介以及五大基本数据类型
文章目录🍔Day24-Redis学习笔记-Redis简介以及五大基本数据类型🍟1.什么是Redis🍕Redis是一款基于键值对的NoSQL(Not only SQL)数据库🍕Redis具有如下特点:🍕Redis具有如下功能:🍟2.Redis中的的五种数据类型简介🍕五大数据类型介绍🍕String(字符串)🍕LIST(列表)🍕HASH(哈希)🍕SET(集合)🍕ZSET(有序集合)🍜key相关的命令🥗DEL命令🥗DUMP命令🥗EXISTS命令🥗TTL命令和EXPIRE命令🥗PERSIST命令🥗PEXPIRE命令🥗原创 2022-04-12 17:30:06 · 259 阅读 · 0 评论 -
Day23-SpringBoot整合Web开发之文件上传
💖Day23-SpringBoot整合Web开发之文件上传 👉SpringMVC对文件上传做了简化,在SpringBoot中对此做了更进一步的简化,文件上传更为方便。Java中的文件上传一共设计两个组件,一个是CommonsMultipartResolver,另一个是StandardServletMultipartResolver,其中CommonsMultipartResolver使用commons- fileupload来处理multipart请求,而StandardServletMultipart原创 2022-04-12 17:23:15 · 726 阅读 · 0 评论 -
Day15-面向切面编程AOP
文章目录1. Spring的AOP简介1.1 什么是AOP1.2 AOP的作用及其优势1.3 AOP的底层实现1.4 AOP的动态代理技术1.5 JDK的动态代理1.6 cglib的动态代理1.7 AOP相关概念1.8 AOP开发明确的事项1.9 知识要点2. 基于XML的AOP开发2.1 快速入门2.2 XML配置AOP详解1. 切点表达式的写法2. 通知的类型3. 切点表达式的抽取2.3 知识要点基于注解的AOP开发3.1 快速入门未完待续......1. Spring的AOP简介1.1 什么是AO原创 2022-03-31 17:58:50 · 2030 阅读 · 0 评论 -
Day14-SpringMVC异常处理机制
文章目录1. SpringMVC异常处理1.1 异常处理的思路1.2 异常处理两种方式1.3 简单异常处理器SimpleMappingExceptionResolver1.4 自定义异常处理步骤1.5 知识要点异常处理方式自定义异常处理步骤1. SpringMVC异常处理1.1 异常处理的思路系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发,测试等手段减少运行时异常的发生。系统的Dao、Service、Contro.原创 2022-03-30 16:32:41 · 1889 阅读 · 0 评论 -
Day13-SpringMVC拦截器
Day13-SpringMVC拦截器1.SpringMVC拦截器1.1拦截器(interceptor)的作用SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器案一定的顺序连接陈一条链,这条链称为拦截器链(interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。1.2 拦截器和过滤器的区别区别过滤器(Filter)拦截器(Interce原创 2022-03-29 23:56:11 · 1729 阅读 · 0 评论 -
Day12-基于ListView、GridView、Spinner的Android实例
Day12-基于ListView、GridView、Spinner的Android实例文章目录文章目录Day12-基于ListView、GridView、Spinner的Android实例文章目录题目先看运行效果一、开发主页面MainActivity1.创建New Project项目2. 编写主页MainActivity.java,代码如下:3.编写布局文件activity_main.xml二、开发LIstViewActivity1.新建一个空的activity模块,名为LIstViewActivity原创 2022-03-28 21:01:53 · 4570 阅读 · 3 评论