❶ Java面试常见基础问题有哪些
考的都是java的基础,基础好的话很容易进入公司,一般都会问
String,StringBuffer,StringBudilder区别
ArrayList,vector 等的区别
hashMap,hashTable 的区别
多线程版的实现方式和方法了权
传参数方面的 考传的是本身还是副本 如 a(String value); a方法的value参数是传本身还是副本
其它的问题都是最基本的,基本能答上来
还有就是框架的知识了,比如spring 依赖注入,事务深入点的话 拦截器等
考其它框架的话 基本上问的都是比较基础的 难的话很少问到
db方面的话 简单考下你的sql , 可能会写几个表 要查什么让你写sql 主要考 多表连接查询,分组,分组后的查询,排序,取最大最小之类的 看你sql熟练否
我面试过10多间公司 基本都是上面我说到的问题
❷ java面试/笔试题
1.JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts2.0为其它框架提供了更好的集成。
使得与Spring的集成非常的容易。
2.Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;
-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;
-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;
3.在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。
4.(1) 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
(2) Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
(3)hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
(4)hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
5.原理:
(1).读取并解析配置文件
(2).读取并解析映射信息,创建SessionFactory
(3).打开Sesssion
(4).创建事务Transation
(5).持久化操作
(6).提交事务
(7).关闭Session
(8).关闭SesstionFactory
6.
Hibernate的最大的好处就是简化数据库的操作,允许你的代码以对象模式来访问数据库内容,
比如通常我们找一个User的资料需要select出所需要的资料,而通过hibnate我们可以把这个User的资料作为一个对象来看待
,通过User.getName()或者User.getId()等操作来获得,这样就完全统一了上层JAVA或者C#等OO语言中对于数据库的非OO操作的不和谐了.
另外对于复杂的表和表之间的关联我们也不用去使用复杂的Select等SQL来操作,而使用对象可以方便获得,
比如多对多关系某用户属于的部门的名称,虽然底层数据库使用了3个表的主键关联操作,
但是我们可以通过User.getDep().getName()来简单的获得,这个就是持久化对象的好处了
7.
(1)、spring能简化企业级开发, spring可以用简单的java bean来代替实现复杂的EJB。(大部分情况下)
(2)、spring是一个轻量级的IOC和AOP框架,可以spring的IOC实现松耦合,而作为一个AOP框架他又能分离系统服务,实现内聚开发
(3)、spring是非侵入式,基于spring的系统可以不依赖于spring的类。
良好的spring运用可以使程序代码清晰,容易维护,容易测试。
8.
Spring是个很不错的框架。内部最核心的就是IOC了,
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射
反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置
文件来动态的创建对象,和调用对象里的方法的 。
Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是
在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过
配置类达到的。
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明
管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式)
Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了
也就基本上掌握了Spring.
9.
(1).spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
(2).DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
(3).DispatcherServlet请请求提交到目标Controller
(4).Controller进行业务逻辑处理后,会返回一个ModelAndView
(5).Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
(6).视图对象负责渲染返回给客户端。
❸ java基础面试题有哪些
下面是10道java基础面试题,后附答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。
3.JDK 和 JRE 的区别是什么?
Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
4.是否可以在 static 环境中访问非 static 变量?
static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java 支持的数据类型有哪些?什么是自动拆装箱?
Java 语言支持的 8 中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
6.Java 支持多继承么?
不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。
Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。
8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
9.接口和抽象类的区别是什么?
Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
最后祝你面试顺利!
❹ Java面试题-基础+集合原理(一)
—、面向抄对象的特征
面向对象的三个基本特征是:封装、继承、多态。
1、封装
封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让 可信的类或者对象操作,对不可信的进行信息隐藏。
2、继承
面向对象编程(OOP)语言的一个主要功能就是“继承”。继承是指这样一种能力: 它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能 进行扩展。
3、多态
多态性(polymorphism是允许你将父对象设置成为和一个或更多的他的子对象 相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同 的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的 指针。
实现多态,有二种方式,重写,重载。
详见如下:网页链接
❺ 一般java面试都会问些什么问题
在回答之前建议你去蛙 课上看看,有很多Java面试时会考到的技术视频教程,而且每周都会更新一个一线大厂的技术。
1.hashmap0.75是什么?构造函数怎么传?线程安全么,不安全会导致什么问题?
2.arraylist和linkedlist区别,arraylist构造函数有什么用,不传入会导致什么问题?同时还是问线程安全么?
3.collections下面的同步方法和concurrent包下的有什么区别?
4.创建线程的三种方式和区别,线程池的构造函数,给定n核cpu,io密集怎么创建线程池,cpu密集怎么创建线程池?
5.jvm有哪些区?cms gc原理,逃逸分析和标量替换是什么?做过哪些调优,用了什么参数?解决过什么内存泄露或者堆栈溢出问题么?用什么工具或者手段监控并解决?
6.spring restcontroller和controller区别是什么?autowired和resource 区别是什么?beanfactory和factorybean区别是什么?
7.mybaties的#{}和${}有什么区别?同时引出preparedstatement和statement有什么区别?
8.http怎么开启长连接?缓存怎么实现?
9.描述tcp四次挥手流程和状态
10.mysql常用优化手段,一个字段如果只有0或1需要加索引么?如果还有另外一个字段经常被查询,这俩字段做什么索引?最左前缀原则是什么?如何避免回表?如何实现乐观锁?事务隔离级别都有什么?
11.linux最尾部活动查看实时日志用什么命令?如何查看进程并结束?
12.描述epoll和select原理和差距
13.git merge和rebase区别?cherry-pick是什么?
14.你项目里写什么了,就会问其中实现部分的方案和设计思路,也问技术点。
❻ 我要面试了,给些java面试基础问题,在线等
一、Java基础知识
1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
2.字符串的操作:
写一个方法,实现字符串的反转,如:输入abc,输出cba
写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
3.数据类型之间的转换
如何将数值型字符转换为数字(Integer,Double)
如何将数字转换为字符
如何取小数点前两位,并四舍五入。
4.日期和时间
如何取得年月日,小时分秒
如何取得从1970年到现在的毫秒数
如何获取某个日期是当月的最后一天
如何格式化日期
5.数组和集合
6.文件和目录(I/O)操作
如何列出某个目录下的所有文件
如何列出某个目录下的所有子目录
判断一个文件或目录是否存在
如何读写文件
7.Java多态的实现(继承、重载、覆盖)
8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。
10.找出下列代码可能存在的错误,并说明原因:
二、JSP&Servlet技术
1.描述JSP和Servlet的区别、共同点、各自应用的范围
2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”)
3.在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。
4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
5.列出Jsp中包含外部文件的方式,两者有何区别。
6.说明Jsp中errorPage的作用,应用范围。
7.介绍在Jsp中如何使用JavaBeans。
8.简单介绍JSP的标记库
9.Jsp和Servlet中的请求转发分别如何实现。
三、J2EE相关知识
1.介绍J2EE、J2SE、J2SE的区别。
2.J2EE是一种技术还是一种平台,他提供了那些技术。
3.什么是Application Server,它有什么功能和优点。
4.简单介绍连接池的优点和原理。
5.Web.xml的作用
四、其他
1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑)
2.简单介绍您所了解的MVC。
3.简单介绍所了解的XML。
4.文档和编码规范
5.Java中的分页、效率考虑。
6.简单介绍您所了解的structs。
.xml在项目中的作用
2.s-EJB 与 e-EJB的区别
3.会话面的作用
4.cmp与bmp的优缺点
5.j2me程序的必需的几个部分
6.c/s与b/s的区别
7.构建一个connect pool,然后再调用它,
8.j2ee平台与dotnet平台的区别
9.ejb的life cycle
10.session bean 和 entity bean的区别
11.ejb中的transaction机制
12.synchronized (生产者和消费)
13.String 和 StringBuffer
14.Serializable
15.MVC (Struts的工作流程)
16.什么是MDA
17.tcp与udp的区别
18.链表与散列表和数组的区别
19.堆和栈的区别
20.ejb的分类及区别
21.你对现在软件业以及国内软件业的看法
22.谈谈java多线程
23.谈谈文件加密技术
24.软件开发生命周期
25.路由协议种类及特点
26.java的awt和swing组件的GUI设计的关键
27.对于java流的认识
28.简单描述一下awt与swing区别。
29.简述java编程中事件处理模式。
30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。
31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。
32.简述 Java Server Page 和 Servlet 的联系和区别。
33.简述synchronized和java.util.concurrent.locks.Lock的异同 ?
34.EJB规范规定EJB中禁止的操作有哪些?
35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用?
36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式?
37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别?
38.列举三种以上垃圾回收算法,并比较其优缺点?
39.编写代码实现一个线程池
40.描述一下JVM加载class文件的原理机制?
41.试举例说明一个典型的垃圾回收算法?
42.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来.
43.请写一个java程序实现线程连接池功能?
44.给定一个C语言函数,要求实现在java类中进行调用。
45.如何获得数组的长度?
46.访问修饰符“public/private/protected/缺省的修饰符”的使用
47.用关键字final修饰一个类或者方法时,有何意义?
48.掌握类和对象的概念,掌握面向对象编程的本质
49.静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法?
50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally
51.Object类(或者其子类)的finalize()方法在什么情况下被调用?
52.一个“.java”原文件中是否可以包括多个类(不是内部类)?
53.掌握内部类和接口的概念
54.StringTokenizer类的使用
55.数据结构,如何遍历List中的元素?
如果要按照键值保存或者访问数据,使用什么数据结构?
要掌握Collection相关的接口和类的使用
56.使用StringBuffer类与String类进行字符串连接时有何区别?
57.调用Thread类的destroy()方法有什么后果?
58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
59.使用socket建立客户端与服务器的通信的过程
60.JAVA语言国际化应用,Locale类,Unicode
61.描述反射机制的作用
62.如何读写一个文件?
63.在图形界面中,一个按钮如何处理鼠标点击事件?
64.在图形界面中,一个表格,如何实现编辑单元格时弹出下拉框?
65.如何加载图片?
66.什么是模态对话框?
67.阐述MVC的概念
68.GUI布局管理器的使用,FlowLayout,BorderLayout,GridBagLayout
69.如何构造一棵树?选择树的一个节点时,如何得到这个节点?
70.向编辑框中输入字符时,如何控制只输入整数?
71.描述使用JDBC连接数据库的过程
72.EJB分为几类?什么是BMP,CMP?
73.什么是JNDI?
74.ADO是什么?ActiveX数据对象,是一个应用级程序接口.
75.四种JDBC方式?目前的版本?
76.EJB有哪几种?区别是什么?
77.JavaBean与EJB有什么区别?
78.软件开发生命周期有哪几个阶段?
79.软件开发有哪些因素?
80.软件开发中如何进行版本控制?
81.UML中,类视图如何表示类中的继承与聚合?
82.客户端游标与服务器端游标的区别?
83.动态游标与静态游标的区别?
84.dotnet由哪几个基本框架组成?
85.Oracle中SGA是什么?
86.web servers是什么?
87.UNIX中QT是什么意思?
88.在软件开发生命周期中的哪个阶段开始测试?
89.dotnet与J2EE的比较?
90.什么是ActiveX?
91.Java中IDL是什么?
92.ISO9000和CMM是什么?IS09000和CMM(软件能力成熟度模型)认证是国际上通用的软件质量评估方法.CMM的五个成熟度等级。