分享一个我刚毕业找工作时的java面试笔记整理,给新人一些借鉴。
集合
List特点:元素有放入顺序,元素可重复
Set特点:元素无放入顺序,元素不可重复
实现类:HashSet无序,TreeSet有序
遍历MAP:
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
// 第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
System.out.println("-------------");
// 第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
System.out.println("-------------");
// 第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
System.out.println("-------------");
// 第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
遍历List:
List<String> list = new ArrayList<String>();
list.add("testone");
list.add("testtwo");
list.add("testthree");
// 第一种
for (String string : list) {
System.out.println(string);
}
System.out.println("-------------");
// 第二种
for (Iterator<String> it = list.iterator(); it.hasNext();) {
System.out.println(it.next());
}
// 第三种
System.out.println("-------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
数据库
连接池:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/test");
Connection conn=ds.getConnection();
Jdbc连接数据库
1、加载驱动程序
2、建立连接 Connection con = DriverManager.getConnection(URL, userName,userPwd);
3、建立Statement (通过Connection对象进行创建),Statement st = con.createStatement();//建立 Statement 之后,就可以使用Statement的对象 st 来执行sql语句了
4、关闭连接con.close()
触发器:
触发器通常在进行登录或者对表作修改时触发,可以作为登录验证或者数据监控。换句话说,触发器是用来管理数据库的,很少用来操作数据。比如,我要知道谁在什么时候修改了Test表,修改了什么,就要使用触发器了。
视图简介:
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。
CREATE OR REPLACE VIEW dept_sum_vw (name,minsal,maxsal,avgsal)
AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.dname;
多表查询:
select empno,ename,sal,dname,loc from emp,dept where emp.deptno=dept.deptno;
左外连接:左外连接,以左为基础,右边满足条件的就展示,左边都显示;
select empno,ename,job,sal,dept.deptno,dname,loc
from emp,dept
where emp.deptno=dept.deptno(+)
FROM Emp LEFT JOIN Dept
ON Emp.Deptno = Dept.Deptno
Oracle数据库常用数据类型:
Char,varchar,number,data,long
Oracle数据库数据类型转换:
to_cahr(Date,’YYYY-MM-DD HH24:MI:SS’);
Exists是存在判断,只要有其中一个存在就返回。
in是返回所有包含在in中的数据。
–插入信息
insert into dossier
(id,cname,birthday,email,weight)
values
(01,'詹姆斯',to_date('1980.12.31','yyyy.mm.dd'),'sae2w123@qq.com',310);
–更新信息
update dossier set COUNTRY = 'USA',id='2' where id in '1';
–插入列
alter table dossier add(home varchar(10));
–修改列 默认值
alter table dossier MODIFY(home DEFAULT 'beijing');
–删除行
delete from student where xh='A001' and sex='男';
–删除列
alter table dossier DROP (home);
–删除表
drop table doSsier;
框架
事物:原子性、一致性、隔离性、永久性
Struts2配置
Web.xml加载struts2
<filter>
<filter-name>struts2</filter-name>
<filter-class> org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Struts.xml
与spring集成时需加入
<constant name="struts.objectFactory" value="spring" />
<struts>
<!-- 基本的配置内容 -->
<!-- package元素的name属性指的是包名, extends属性表示继承 struts-default这个包 -->
<package name="struts2" extends="struts-default">
<!-- action元素的name属性值对应Form表单的action属性值,class属性表示要处理的那个action类,这里是提交给LoginAction处理 -->
<action name="login" class="com.test.action.LoginAction">
<!-- result元素的name属性值对应LoginAction中被调用的那个方法的返回值,根据返回值去匹配name属性,然后跳转到相应的JSP页面 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
Spring配置
Web.xml加载spring
<context-param>
<param-name>contextConfigLocation</param-name>(名字固定不能变了)
<param-value>
/WEB-INF/configs/applicationContext.xml
(这个是applicationContext.xml所在的路径 默认根目录是从WEBROOT目录下开始的)
</param-value>
</context-param>
<!-- Spring Loader -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
(加载一个监听器,照着写就行)
</listener>
applicationContext.xml 里写依赖关系
<bean name="IocAction" class="sy.struts2.ioc.IocAction">
<property name="iti">
<bean class="sy.struts2.ioc.IocTestImpl"></bean>
</property>
</bean>
SpringMVC配置
Web.xml加载
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 设置拦截器 -->
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- Spring配置监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
spring-servlet.xml配置
<!-- 启用spring mvc 注解 -->
<context:annotation-config />
<!-- 设置使用注解的类所在的controller包 -->
<context:component-scan base-package="controller"/>
<!-- 完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/jsp/"
p:suffix=".jsp" />
</beans>
applicationContext.xml配置
<!--配置数据源 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:config/hibernate.cfg.xml</value>
</property>
</bean>
<!-- 将事务与数据源关联 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
//写依赖关系
Hibernate配置
1、配置hibernate.cfg.xml:数据库驱动、数据库地址、数据库方言、用户名、密码
注册
<mapping resource =user.hbm.xml>
2、配置user.hbm.xml:指定类,主键,属性。
3、生成表格:
//加载读取hibernate配置文件
Configuration cfg=new Configuration().configure();
//生成导入相应的映射文件
SchemaExport export=new SchemaExport(cfg);
export.create(true, true);
4、测试:通过sessionFactory.getSession操作数据库
其他
stringbuffer与stringbuilder的区别:
在执行速度方面的比较:StringBuilder > StringBuffer
StringBuilder:线程非安全的
StringBuffer:线程安全的
值传递、引用传递:
基本数据类型是值传递;只传值,不对原数据进行修改
对象数据类型(数组)是引用传递。传地址,对象修改
单例模式
确保一个类只有一个实例,并提供一个访问他的全局访问点.
必须自行创建实例,必须自行向整个系统提供这个实例.
// 自身的私有成员变量
private static LazySingleton singleton;
// 私有无参构造方法
private LazySingleton() {
}
// 提供一个共有的静态方法
public static LazySingleton getInstance() {
if (singleton == null) {
singleton = new LazySingleton();
}
return singleton;
}
配置Servlet:
<servlet>
<servlet-name>MyServlet </servlet-name> //这里是servlet 的名字,自己定义 的
<servlet-class>Servlet </servlet-class> //这里是servlet的位置 。 如果在 一个包下, 就写 包名.类名
</servlet>
<servlet-mapping>
<servlet-name>MyServlet </servlet-name> //这里跟 上面的;servlet-name 必须一样
<url-pattern>/abc </url-pattern> //这里 在地址 输入访问的 时候 输入的,自己定义
</servlet-mapping>
jQuery Ajax
$.ajax({
type:"POST",//请求方式(post或get)默认为get。
url:"UserServlet",//发送请求的地址。
data:"userName="+name+"&method=check",//发送到服务器的数据
dataType:"json",//预期服务器返回的数据类型。
success:function(data){//请求成功后调用的回调函数
}
});
jQuery,el表达式区别:
jQuery 可以是 jQuery.(); 这样的形式,也可以是
();而EL表达式是
{} 这样的形式
jQuery的使用:
直接引用jquery库
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
或者直接下载保存jquery-1.9.1.min.js
<script src="jquery-1.9.1.min.js"></script>