Java面试题准备(掌握)
1、使用什么方式进行文件上传?
一般使用FormData对象,ajax异步上传。
为什么使用?
1、FormData对象
Mozilla上的介绍的,XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过方法来异步的提交这个”表单”.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.
2、ajax方式(关键是设置:processData 和 contentType )
告诉jQuery不要去处理请求的数据,用于对data参数进行序列化处理 这里必须false
processData:false
// 告诉jQuery不要去设置Content-Type请求头
contentType : false, //必须
2、 Spring IoC
IoC (控制反转)不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。
DI(依赖注入)
2、针对与Spring AOP理解
AOP面向切面,切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
实现策略JAVA SE动态代理、CGLib
代理模式:代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,
代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等
代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
spring aop通知(advice)分成五类:
前置通知[Before advice]:
在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
正常返回通知[After returning advice]:
在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
异常返回通知[After throwing advice]:
在连接点抛出异常后执行。
返回通知[After (finally) advice]:
在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
环绕通知[Around advice]:
环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。
3、多线程
一个程序至少有一个进程一个进程至少有一个线程,进程是程序的基本单位,线程是进程的一个实体
是共享内存资源,减少切换次数,提高效率。
多线程,多个线程同时执行多个任务
4、Spring MVC
SpringMvc是spring的一个模块 基于MVC的一个框架 无需中间整合层来整合
什么是MVC ?mvc在b/s下的应用:
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。
它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,
在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
首先请求发送request请求到C(control 接收用户请求响应用户) 然后控制器到M模型(pojo、action、service、dao)层处理
处理结果完了返回控制器 控制器要经过视图渲染 最后返回终端(response)
5、Redis基本数据类型:
String(字符串)
Hash(哈希)
List(列表)
Set(集合)
Zset(有序集合)
6、对于前后端分离的理解
针对于业务逻辑来划分
所有针对业务逻辑去实现的部分是后端,用来展现数据和用户交互的部分属于前端。
7、JDK和JRE的区别
JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。
JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。
8、Java数据类型
(2)Java数据类型在内存中的存储:
1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,
数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;
2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,
使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;
区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念),
9、Java中final关键字的作用
final关键字可以用于三个地方。用于修饰类、类属性和类方法。
被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写);
对于被final关键字修饰的类属性而言,子类就不能给他重新赋值了,如果重新赋值,会报错:
10、GET和POST的区别
HTTP(超文本传输协议)是什么?HTTP是基于TCP(传输控制协议)IP(互联网协议)的关于数据如何在万维网中如何通信的协议。
HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。
get和post底层都是TCP/IP,所以get和post都是TCP链接
GET传输渠道:method为GET,把数据存放到URL。进行传输。他的优点方便记录,缺点不太安全
POST传输渠道:method为POST,数据会在request body中。
大小限制:(大多数)浏览器通常都会限制url长度在2K个字节,post就比较大了。
GET和POST还有一个区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
11、简单的解释一下垃圾回收
Java 垃圾回收机制最基本的做法是分代回收。内存中的区域被划分成不同的世代,对象根据其存活的时间被保存在对应世代的区域中。
一般的实现是划分成3个世代:年轻、年老和永久。内存的分配是发生在年轻世代中的。当一个对象存活时间足够长的时候,它就会被复制到年老世代中。
对于不同的世代可以使用不同的垃圾回收算法。
垃圾回收算法
1、标记-清楚
2、标记整理
3、标记复制
4、分代回收
Java面试题准备(掌握)的更多相关文章
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- Java面试题(全)
JAVA部分 什么是反射机制?反射机制应用(Struts中反射机制的应用) 答:运行状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以 ...
- Java面试题大全(四)
JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
- JAVA面试题集之基础知识
JAVA面试题集之基础知识 基础知识: 1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...
- [原]Java面试题-将字符串中数字提取出来排序后输出
[Title][原]Java面试题-将字符串中数字提取出来排序后输出 [Date]2013-09-15 [Abstract]很简单的面试题,要求现场在纸上写出来. [Keywords]面试.Java. ...
随机推荐
- 底部版权时间自动变化,网页在线qq咨询
<p><small>© 众筹网<script>document.write(new Date().getFullYear());</script> &l ...
- 共享手机网络给电脑(USB连接)
华为手机步骤: 设置-->搜索-->hdb-->允许HiSuite通过HDB连接设置 设置-->无线和网络-->移动网络共享-->USB共享网络
- pyltp安装
第一步:下载wheel文件 第二步:进入该文件的文件夹 第三步:pip install wheel文件名 注意:python的安装版本必须和pyltp的版本相同,我这版本都是pyhton3.6.之前p ...
- [原创]在Windows平台使用msvc(cl.exe) + vscode编写和调试C/C++代码
1.在.vscode目录下,新建以下几个配置文件,当然也可以通过vscode命令自动生成,如果你已有这些文件直接修改即可. c_cpp_properties.json(代码提示): { "c ...
- R的数据结构--数组
数组:可以认为数组是矩阵的扩展,它将矩阵扩展到2维以上.如果给定的数组是1维的则相当于向量,2维的相当于矩阵. R语言中的数组元素的类型也是单一的,可以是数值型,逻辑型,字符型或复数型 参数解释 ar ...
- Cloneable注解使用
使用 clone()方法的类必须 implement Cloneable 如果没有继承,clone()方法会报错 java.lang.CloneNotSupportedException异常
- 使用Ajax中get请求发送Token时踩的那些坑
在使用惯了各种牛X的插件以后,在使用原生组件写一些小东西的时候总是有踩不完的坑! 今天就来说一说我使用原生ajax请求时踩得坑: 下面是我的代码: var xmlhttp; if (window.XM ...
- Qt 窗体增加滚动条
//滚动区域 m_ScrollArea = new QScrollArea(parentWidget()); m_ScrollArea->setGeometry(, , , ); //垂直滚动条 ...
- GNS3错误’Could not start Telnet console with command 'Solar-PuTTY.exe‘
这个报错是由于电脑中没有安装Solar-Putty导致的.直接安装一个solar-putty或者putty,然后在gns3上方工具栏点击:edit - preferences - general -c ...
- Redis:Linux环境部署Redis(1)
简介 1.介绍 Redis是开源的(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理.它支持数据结构,例如 字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询的流空间索 ...