JAVA 面试题复习

1.抽象类与接口的区别?
  抽象类用来被继承,接口用来被实现;
  抽象类里可以写抽象方法也可以写普通方法,接口里只能写抽象方法,一个类继承一个抽象类或实现一个接口,必须要重写其中的抽象方法;
  抽象类里可以写属性,接口也可以写属性,接口中的属性全部默认为final修饰常量(不能修改)

2.线程启动的方式?   
   1)一个类继承Thread,重写 run()方法,在调用时,使用 start( )开启线程;
   2)一个类实现runable接口,重写 run()方法,在调用时,使用 start( )开启线程;
   3)直接在函数体使用

3.Spring Bean的生命周期?
  在服务器启动过程中,系统会扫描spring主配置文件中已配置的注释解析工具标签,并读取指定包名下加了@Repository  @service @controller
  标签的类,创建相应的实例,并保存在spring容器中,等待程序在需要时自动注入、调用。
  创建的springbean会随着服务器的停止而消亡。

4.Stringbuilder和StringBuffer的区别:    
   前者是线程不安全 ,后者是线程安全的,两者效率都比String高

5.解析xml的方式有哪几种:    
   DOM,SAX,DOM4J,JDOM

6.存取数据的方式:    

   JDBC技术,输入输出流,配置文件解析

7.socket编程

    socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。


8.Spring 配置bean的作用域
  spring中配置的bean会在服务器启动是创建完成,并放入spring容器中,系统中任意类都可通过书写成员变量并加上自动注入@autowire
  标签,来绑定并注入spring容器已创建好的bean,并调用其中的方法和属性。

9.map里面的key是否能重复能不能为null;
  map 的key不能重复,接口有三个常用实现类:
  1)HashMap    允许空键空值,无序,不允许重复,线程不安全
  2)HashTable   不允许空键空值,无序,允许重复,线程安全
  3)TreeMap      允许空键空键,有序,不允许重复,线程不安全


10.字符串怎样排序

       public static String stringSort(String str){
		   //将字符串转换成字符数组
		   char[] cha = str.toCharArray();
		   //调用arrays的排序方法 sort( )
		   Arrays.sort(cha);
		   //将排好序的字符数组重新拼装成字符串
		   return new String(cha);
      }


11.hibernate  的xml配置?

      1)、hibernate 主配置文件如下: 
<hibernate-configuration>

		<session-factory>
				 <!-- 配置数据库连接配置 -->
				 <property name="hibernate.connection.username">root</property>
	   			 <property name="hibernate.connection.password">123456</property>
	   			 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	    	   	         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/moriarty</property>
				<!-- 配置方言 -->
				<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
				<!-- 在控制台显式sql语句 -->
				<property name="show_sql">true</property>
				<!-- 格式化sql语句 -->
				<property name="format_sql">true</property>
		
				 <!-- 引入关联实体映射xml文件 -->
				<mapping resource="com/lovo/config/User.hbm.xml"/>
				<mapping resource="com/lovo/config/UserVo.hbm.xml"/>
				<mapping resource="com/lovo/config/Role.hbm.xml"/>
				<mapping resource="com/lovo/config/RoleMenu.hbm.xml"/>
				<mapping resource="com/lovo/config/MenuVo.hbm.xml"/>
				
		</session-factory>

</hibernate-configuration>

      2)、实体类映射XML文件配置如下:(实体类文件名默认格式为    xxx.hbm.xml )

 <!-- 实体User类与数据库user表的映射关系 -->
 
 <hibernate-mapping>
 		 <!-- name属性写实体类全名,table属性写数据库里的表名称 -->
 		<class name="com.lovo.entity.User" table="mo_user">
 				<!-- name属性写实体类属性,column属性写数据库里的表结构的列名称 -->
 				<!-- 主键属性 -->
 				<id name="u_id" column="u_id">
 				    <!-- 主键自动递增设置 -->
 				    <generator class="identity"></generator>
 				</id>
 				<property name="u_name" column="u_name"  unique="true" length="20"></property>
 				<property name="u_pass" column="u_pass"   length="20"></property>
 				<property name="u_email" column="u_email"   length="20"></property>
 				<property name="u_phone" column="u_phone"   length="20"></property>
 				<property name="u_otherName" column="u_otherName"  length="20"></property>
 				<property name="u_sex" column="u_sex" ></property>
 				<property name="u_score" column="u_score"></property>
 				<property name="u_imageUrl" column="u_imageUrl" length="100"></property>
 				<property name="u_registerTime" column="u_registerTime"></property>
 				<property name="u_level" column="u_level"></property>				
 		</class>
 </hibernate-mapping>

12.集合元素是有序还是无序的?

               集合体系架构如下

                                                                      collection(根接口)


                                           list  (子接口)                                                            set (子接口)    
                (有序,可放重复元素的集合,有索引)                  (不可放重复元素,无索引,只能通过迭代器来遍历)



       Arraylist               Vector                Linkedlist                            hashset                       treeset


      Arraylist :数组表list,list 接口下面的一个具体实现类,它拥有list的所有特点,它的底层实现是用数组表(内存地址的连续性),所以它对数据的查询搜索是很快,

                          删除相对较慢,因为删除的时候需要维护地址连续性,它是线程不安全的。

      Linkedlist :链表list,和 arraylist 使用方法一样。只是底层实现是链表,它对数据的增加、删除很快,但是查询搜索相对较慢。

      Vector  :跟 Arraylist 一样,它是早期老版本提供的一个集合,它是线程同步的(线程安全的)

      Hashset:以哈希表来存储数据,无序的,不保证每次的顺序。

      treeset:按照元素的自然顺序排列。

      Iterator  :集合的迭代,是一个接口,代表迭代器,里面有方法可以去遍历 collection 里面的数据,任何一个集合对象都能够通过iterater()方法来获取自己的迭代器,

                        通过这个迭代器就可以遍历该集合的元素。

    set 集合重复性判断是利用 object 里面的 equesls 方法的,也就是说一般情况下是判断对象的引用是否重复, 但有些类型是重写过 equals方法的,比如 String 在 set 里面

           的重复是判断值是否重复,当然,我们也可以利用这个特性自己重写 equals 方法。重写 equals 方法,一般要同时重写 hashCode 方法。


13.怎么给集合元素排序?

      1)实现Comparable接口,重写compareTo方法,自定义排序规则

      2)实现Comparator接口,重写compare方法,自定义排序规则


14.map集合元素是否是有序的?

      hashmap   无序,hashtable 无序,treemap有序


15.怎样让一个类不能被继承?

      加上final修饰符


16.接口里能不能定义常量?

      可以,接口中定义的常量默认为static final修饰的。


17.String 和StringBuffer的区别?

      String 不可变字符串,拼接字符串时不时改变原有对象,而是会产生新对象,会占用内存,性能不好

      StringBuffer  可变字符串,相当于字符串缓冲区,其中提供很多字符串拼接方法方便使用,性能较好,一般字符串业务处理都是用StringBuffer

                               处理完成后再 调用 toString( ) 返回字符串。


18.实现多线程的方法?

      实现runable接口,继承thread类,重写run方法,调用start方法,开启线程。


19.什么时候用抽象类,什么时候用接口?

      多个对象中共有的属性和特征,这些对象概念上同属一个类别之下,可将这些共有的属性和特征提取出来,创建一个抽象类,相当于一个类别,如动物抽象类,

     它代表有生命的,有独立思维和活动能力的物种,其子类包括 狗、猫、猪、人类等。

     接口一般用于书写业务、方法的规范,定义一个方法的参数、名称、返回值等,形成一种规范,子类实现这个接口时,必须按照规范来重写方法,以实现相应的功能。

     

20.内部类有哪些种类?

     成员内部类、局部内部类、静态内部类、匿名内部类


21.怎么在外部调用内部类?
     外部类可以通过实例化内部类对象来访问内部类里面所有成员变量或者方法

22.怎么样方法不能被实现?怎么让类不能被继承?

      加上final修饰符,则此方法不能被重写,类不能被继承。


23.静态方法能不能掉用非静态方法?

     不可以,必须使用实例对象来调用


24.spring bean  是什么?
     在服务器启动过程中,系统会扫描spring主配置文件中已配置的注释解析工具标签,并读取指定包名下加了@Repository  @service @controller
     标签的类,创建相应的实例,并保存在spring容器中,等待程序在需要时自动注入、调用。

     创建的springbean会随着服务器的停止而消亡。


25.spring 用的是什么模式,怎么用spring实现多列  ?

      工厂模式和单例模式


26.说说对AOP的了解。

      spring中的面向切面编程,相当于定义一个切面,开发人员只需考虑在切面的纵向实现逻辑功能,然后放回横向业务流,由spring

      自动代理,最常见的运用就是事务控制,程序员只需完成逻辑功能,将开启事务、事务提交、事务回滚等操作让spring自动代理。

      一般会在服务层 的方法上加上 @Transactional(readOnly=true)  注释,true 表示只读事务,用于查询, false 表示非只读事务,用于增删改。


27.map框架由什么组成,他们的区别

      hashmap  :允许空值空键,无序,不允许重复值,线程不安全

      hashtable  :不允许空值空键,无序,允许重复值,线程安全

      treemap     : 允许空值空键,有序,不允许重复值,线程不安全


28.接口里可不可以定义常量

      可以,接口中定义的常量默认为static final修饰的。


29.mysql的分页关键字,两个值代表什么

      limit  a,b

      a代表分页起始行号,mysql中的行号是从0开始的。

      b表示每页总共显示的行数

      如   limit   0,10  表示从查询第一行到第十行的数据,每页显示十条数据。


30.一个对象能不能放入一个文件中

     可以,首先这个对象对应的类必须实现Serializable 序列化接口,启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本

    身都是可序列化的。序列化接口没有方法或字段,仅用于标识序列化的语义。


31.跳出循环的方式

       break


32.list集合去重的方法

   

 List<Integer> list=new ArrayList<Integer>();  
    list.add("A");  
    list.add("B")
    list.add("C");  
    list.add("D");  
    list.add("A");  
    list.add("C");   
    List<Integer> tempList= new ArrayList<Integer>();  
    for(Integer i:list){  
        if(!tempList.contains(i)){  
            tempList.add(i);  
        }  
    }  


33.事务隔离级别

      提交读、未提交读、可串行读、可重复读


34.sql serve 分页

      top 关键字


35.oracle 分页

      通过 rownumber  子查询分页


36.mysql 分页

      limit  关键字


     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你复习Java基础面试题。以下是一些常见的Java基础面试题及其答案: 1. Java中的基本数据类型有哪些? 答:Java中的基本数据类型包括byte、short、int、long、float、double、boolean和char。 2. Java中的包装类是什么? 答:包装类是一种将基本数据类型封装成对象的方式。Java提供了对应于每个基本数据类型的包装类,如Integer、Double、Boolean等。 3. Java中的String类是可变的吗? 答:String类是不可变的,即一旦创建就不能被修改。如果需要对字符串进行修改操作,可以使用StringBuilder或StringBuffer类。 4. Java中的final关键字有什么作用? 答:final关键字可以用来修饰类、方法和变量。当修饰类时,表示该类不能被继承;当修饰方法时,表示该方法不能被重写;当修饰变量时,表示该变量的值不能被修改。 5. Java中的抽象类和接口有什么区别? 答:抽象类是一种不能被实例化的类,它可以包含抽象方法和非抽象方法。接口是一种完全抽象的类,它只能包含抽象方法和常量。一个类可以实现多个接口,但只能继承一个抽象类。 6. Java中的异常处理机制是什么? 答:Java中的异常处理机制通过try-catch-finally语句块来实现。当可能发生异常的代码放在try块中,如果发生异常,则会被catch块捕获并进行处理,最后无论是否发生异常,都会执行finally块中的代码。 7. Java中的多线程是如何实现的? 答:Java中实现多线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。通过重写Thread类的run()方法或实现Runnable接口的run()方法来定义线程的执行逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值