撩课-Java每天10道面试题第5天】的更多相关文章

撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), 我们可以通过遍历索引 也可以通过迭代器进行遍历. 在我们使用迭代器进行遍历集合的时候, 会获取到当前集合的迭代对象. 在里面有封装了迭代器的remove方法 与集合自带的remove方法, 如果我们调用迭代器对象的remove方法 是没问题的, 但是当我们调用集合自带的remove方法时, 就会产生…
撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类变量 都是共享同一块内存空间. 实例变量也叫对象变量, 这种变量没有加static修饰符. 只能通过对象调用, 而且所有对象的同一个实例变量 是共享不同的内存空间的. 区别在于: 静态变量是所有对象共有的, 某一个对象将它的值改变了, 其他对象再去获取它的值, 得到的是改变后的值: 实例变量则是每一…
1.简述JDK.JRE.JVM? 一.JDK JDK(Java Development Kit) 是整个JAVA的核心, 包括了Java运行环境(Java Runtime Envirnment), 一堆Java工具(javac/java/jdb等) 和Java基础的类库(即Java API 包括rt.jar). JDK是java开发工具包, 基本上每个学java的人都会先在机器 上装一个JDK, 那他都包含哪几部分呢? 在目录下面有 六个文件夹. 一个src类库源码压缩包. 和其他几个声明文件.…
51.HashMap的实现原理 HashMap的主干是一个Entry数组. Entry是HashMap的基本组成单元, 每一个Entry包含一个key-value键值对. HashMap基于hashing原理, 我们通过put()和get()方法储存和获取对象. 当我们将键值对传递给put()方法时, 它调用键对象的hashCode()方法 来计算hashcode, 让后找到bucket位置来储存值对象. 当获取对象时, 通过键对象的equals()方法 找到正确的键值对, 然后返回值对象. H…
41.Iterator.ListIterator 和 Enumeration的区别? 迭代器是一种设计模式, 它是一个对象, 它可以遍历并选择序列中的对象, 而开发人员不需要了解 该序列的底层结构. 迭代器通常被称为“轻量级”对象, 因为创建它的代价小. Java中的Iterator功能比较简单, 并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator. 第一次调用Iterator的next()方法时, 它返回序列的第一个元素. 注意:iterator()方法是…
21.final, finally, finalize的区别 1.final修饰符(关键字). 被final修饰的类, 就意味着不能再派生出新的子类, 不能作为父类而被子类继承. 因此一个类不能既被abstract声明, 又被final声明.将变量或方法声明为final, 可以保证他们在使用的过程中不被修改. 被声明为final的变量必须在声明时给出变量的初始值, 而在以后的引用中只能读取. 被final声明的方法也同样只能使用, 即不能方法重写. 22.finally是在异常处理时 提供fin…
11.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面, 以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分, 暂时不用部分细节. 抽象包括两个方面, 一是过程抽象, 二是数据抽象. 2.继承: 继承是一种联结类的层次模型, 并且允许和鼓励类的重用, 它提供了一种明确表述共性的方法. 对象的一个新类可以从现有的类中派生, 这个过程称为类继承. 新类继承了原始类的特性, 新类称为原始类的派生类(子类), 而原始类称为新类的基…
撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户端请求的任何信息. 它与FTP.Telnet等协议不同, FTP等协议可以记住用户的连接信息. 会话(Session)是指一个终端用户 与交互系统进行通信的时间间隔, 通常指从登陆系统到注销系统之间 所经过的时间以及如果需要的话, 可能还有一定操作空间. JSP有四种方式实现会话跟踪功能. Cook…
撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使用preparedStatement) .通过statement执行sql并获取结果 .对sql执行结果进行解析处理 .释放资源(resultSet.preparedstatement.connection) 97.JDBC中的Statement 和PreparedStatement的区别? Jav…
撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单元(即单个事务,单个线程), 它通常只使用一次, 然后就丢弃. 如果一个Session 实例允许共享的话, 那些支持并发运行的, 例如Http request,session beans 将会导致出现资源争用. 如果在Http Session中有hibernate的Session的话, 就可能会出现…
撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系. 可以使用XML很方便的做信息配置, 软件的各种配置参数和对象关系 都存贮在XML文件中. 在做数据交换平台时, 将数据组装成XML文件, 然后将XML文件压缩打包加密后 通过网络传送给接收者, 接收解密与解压缩后再同XML文件中 还原相关信息进行处理. 77.XML文档约束有哪几种?有什么区别?…
撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, application, out, config, exception Page指的是JSP被翻译成Servlet的对象的引用. pageContext对象可以用来获得其他8个内置对象, 还可以作为JSP的域范围对象使用. pageContext中存的值是当前的页面的作用范围 request代表的是请求对象, 可以…
121.描述Struts2的工作原理 客户端发送请求--> 请求经过一系列过滤器-> FilterDispatcher通过 ActionMapper来决定这个Reques t需要调用哪个Action -> FilterDispatcher把请求的处理交给ActionProxy-> 通过ConfigurationManager询问 Struts配置文件(Struts.xml) 找到需要调用的Action类-> ActionProxy创建一个ActionInvocation的实例…
116.说下Struts的设计模式 MVC模式: web应用程序启动时 就会加载并初始化ActionServler. 用户提交表单时, 一个配置好的ActionForm对象被创建, 并被填入表单相应的数据, ActionServler根据Struts-config.xml文件 配置好的设置决定是否需要表单验证, 如果需要就调用ActionForm的Validate() 验证后选择将请求发送到哪个Action, 如果Action不存在, ActionServlet会先创建这个对象, 然后调用Act…
151.springMVC和struts2的区别有哪些? .springmvc的入口是一个servlet即前端控制器(DispatchServlet), 而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter). .springmvc是基于方法开发(一个url对应一个方法), 请求参数传递到方法的形参, 可以设计为单例或多例(建议单例), struts2是基于类开发, 传递参数是通过类的属性, 只能设计为多例. .Struts采用值栈存储请求和响…
146.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的 用来简化web应用程序开发的应用开发框架, 它是Spring的一个模块, 无需中间整合层来整合 , 它和Struts2一样都属于表现层的框架. 在web模型中, MVC是一种很流行的框架, 通过把Model,View,Controller分离, 把较为复杂的web应用分成逻辑清晰的几部分, 简化开发,减少出错, 方便组内开发人员之间的配合. 147.SpringMVC的流程…
141.Spring AOP是什么? AOP:面向切面编程 AOP技术利用一种称为“横切”的技术, 解剖封装的对象内部, 并将那些影响了多个类的公共行为 封装到一个可重用模块, 这样就能减少系统的重复代码, 降低模块间的耦合度, 并有利于未来的可操作性和可维护性. AOP把软件系统分为两个部分: 核心关注点 和横切关注点. 业务处理的主要流程是核心关注点, 与之关系不大的部分是横切关注点. 横切关注点的一个特点是, 他们经常发生在核心关注点的多处, 而各处都基本相似. 比如权限认证.日志.事务处…
131.Spring是什么? 他解决的是业务逻辑层和其他各层的松耦合问题, 因此它将面向接口的编程思想 贯穿整个系统应用. Spring是一个轻量级的IoC和AOP容器框架. 目的是解决企业应用开发的复杂性, 使用基本的JavaBean来完成 以前只可能由EJB完成的事情, 并提供了更多的企业应用功能, Spring的用途不仅限于服务器端的开发, 从简单性. 可测试性和松耦合的角度而言, 任何Java应用都可以从Spring中受益. 132.说说Spring 的优点? .spring属于低侵入式…
101.请解释下 ORM? 对象关系映射(Object Relational Mapping)模式 是一种为了解决面向对象与关系数据库 存在的互不匹配的现象的技术. 简单来说, ORM是通过使用描述对象和数据库之间映射的元数据, 将程序中的对象自动持久化到关系数据库中. 传统如何实现持久化: .采用硬编码方式, 为每一种可能的数据库访问 操作提供单独的方法, .ORM提供了对数据库的映射, 不用sql直接编码, 能够像操作对象一样从数据库获得数据. ORM核心原则: .简单: 以最基本的形式建模…
91.如何提升数据查询的效率? 1.首先检查表的结构是否合理, 因为采用多表查询的时候, 看主外键的引用关系是否适当. 如果不适当则重新设置表结构. 如果是应用中的系统, 则不需要更改表的字段, 只更改主外键关系. 如果数据库中有较多的数据, 还应采用索引提高查询效率. 2.利用索引(index) 对查询进行优化, index可以避免对表数据的全面扫描, 当你以某个字段建立一个索引的时候, 数据库就会生成一个索引页, 索引页不单单保存索引的数据, 还保存了索引在数据库的 具体的物理地址, 能够很…
126.Struts2中的拦截器有什么用?列举框架提供的拦截器名称? )拦截器是struts2核心组成部分, 它提供了一种机制,使得开发者 可以定义一个特定的功能模块, 这个模块会在Action执行之前或者之后执行 也可以在Action执行之前阻止Action执行. )常用的拦截器有: chain:在不同请求之间将请求参数在不同名字件转换, 请求内容不变 fileUpload:提供文件上传. ​i18n:记录用户选择的区域环境 logger:输出Action的名字 params:将请求中的参数设…
86.如何获得高效的数据库逻辑结构? 从关系数据库的表中 删除冗余信息的过程 称为数据规范化, 是得到高效的关系型数据库表的逻辑结构 最好和最容易的方法. 规范化数据时应执行以下操作: 1.将数据库的结构精简为最简单的形式 2.从表中删除冗余值 3.标识所有依赖与其他数据的数据 规范化过程有几个阶段, 分别称作第一范式(1NF). 第二范式(2NF). 第三范式(3NF). 第四范式(4NF) 以及第五范式(5NF). 对于所有的实际应用, 3NF已经足够了. 87.数据库三范式是什么? 第一范…
161.简述一下springMVC当中的视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法 Spring MVC 也会在内部将它们装配成一个 ModelAndView 对象 它包含了逻辑名和模型对象的视图 Spring MVC 借助视图解析器(ViewResolver)得到最终的视图对象(View), 最终的视图可以是 JSP 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户 视…
156.mvc:view-controller有什么作用? 当我们发送一个请求时,如果没有找到对应的mapping 则会对配置文件当中匹配mvc:view-controller 注意点:使用时要添加后面的内容 <mvc:annotation-driven/> 157.<mvc:annotation-driven />作用是什么? <mvc:annotation-driven /> 是一种简写形式 会自动注册三个Bean RequestMappingHandlerMapp…
136.请解释Spring Bean的生命周期? 首先说一下Servlet的生命周期: 实例化, 初始init, 接收请求service, 销毁destroy: Spring上下文中的Bean生命周期也类似, 如下: .实例化一个Bean 也就是我们常说的new: .按照Spring上下文 对实例化的Bean进行配置 也就是IOC注入: .如果这个Bean已经实现了BeanNameAware接口, 会调用它实现的 setBeanName(String)方法, 此处传递的就是Spring配置文件中…
111.什么是乐观锁(Optimistic Locking)? 悲观锁,正如其名, 它指的是对数据被外界 包括本系统当前的其他事务, 以及来自外部系统的事务处理 修改持保守态度, 因此,在整个数据处理过程中, 将数据处于锁定状态. 悲观锁的实现, 往往依靠数据库提供的锁机制 也只有数据库层提供的锁机制才能真正保证数据访问的排他性, 否则,即使在本系统中实现了加锁机制, 也无法保证外部系统不会修改数据 乐观锁( Optimistic Locking ) 相对悲观锁而言, 乐观锁假设认为数据 一般情…
一. 函数的返回值的概念,语法以及注意事项? 场景 当我们通过某个函数, 处理好数据之后, 想要拿到处理的结果 语法 def 函数(): 函数体 return 数据 注意事项 3.1 return 后续代码不会被执行 3.2 只能返回一次 3.3 如果想要返回多个数据, 可先把多个数据包装成一个集合, 整体返回 列表 元组 字典 ... 二. 在实际开发的过程中, 你是如何给一个函数添加描述信息的? 场景 当我们编写三方函数, 为了方便他人使用, 就需要描述清楚我们所写的函数功能以及使用方式等信…
一. for循环和while循环中的else代表什么意思? 当for循环和while循环顺利的遍历完成时, 就会执行else分支 如果循环过程中, 碰到continue, 只要没有打断循环, 就会继续执行else 例如: , ): print(i) continue else: print("循环顺利执行完毕后", i) # 会打印 , ): print(i) break else: print("循环顺利执行完毕后", i) # 不会打印 , ): print(i…
一. Python程序中, 文件的处理步骤是什么? 打开 open("文件","模式") 读写 2.1 读 f.read(字节数) 字节数默认是文件内容长度 下标会自动后移 f.readline([limit]) 读取一行数据 limit: 限制的最大字节数 f.readlines() 会自动的将文件按换行符进行处理 将处理好的每一行组成一个列表返回 for in 可以直接遍历 f 本身 也可以遍历行列表 2.2 写 f.write("内容")…
一. 解释下什么是闭包? 有怎样的场景作用? 概念 在函数嵌套的前提下 内层函数引用了外层函数的变量(包括参数) 外层函数, 又把 内层函数 当做返回值进行返回 这个内层函数+所引用的外层变量, 称为 "闭包" 标准格式 def test1(a): b = 其他函数定义代码 def test2(): print(a) print(b) return test2 应用场景 外层函数, 根据不同的参数, 来生成不同作用功能的函数 案例 根据配置信息, 生成不同的分割线函数 def line…