java面试笔记(初级)

分享一个我刚毕业找工作时的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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值