java面试第三弹

1、两电脑都在同一个网络环境中,A 电脑访问不到 B 电脑的共享文件。此现象多是哪些方面所致使?怎样处理?java

    首先要肯定是否在同一个工做组内,而后看看是否有防火墙之类的,最后肯定文件是否已经共享程序员

2.事务如何使用?写个Demo实如今一个事物中,新增和更新同时操做?web

  beginTrans 用于开启一个事务,RollbackTrans用于回滚事务,CommitTrans用于提交全部事务处理结果,即确认事务处理。spring

    dome:sql

create database aaa --建立一个数据库
go
use aaa    --选择aaa这个数据库
create table bbb(
    ID int not null primary key, --帐户
    moneys money --转帐金额
)
用这个表建立一个存储过程:
create procedure mon -- 建立存储过程,定义几个变量
@toId int, --接收转帐的帐户
@fromId int, --转出本身的帐户
@momeys money --转出的金额
as
begin tran --开始执行事务
update bb set moneys=moneys-@momeys where ID=@fromID -执行的第一个操做,转帐出钱,减去转出的金额
update bb set moneys=moneys+@momeys where ID=@toID --执行第二个操做,接受转帐的金额,增长
if @@error<>0 --判断若是两条语句有任何一条出现错误
begin rollback tran –开始执行事务的回滚,恢复的转帐开始以前状态
return 0
end
go
else   --如何两条都执行成功
begin commit tran 执行这个事务的操做
return 1
end
go

  oracle默认在执行语句时就开启一个事务的,因此只须要rollback或commit就好了。数据库

  3.字节流与字符流的区别编程

     字节流是最基本的,字节流在操做的时候自己是不会用到缓冲区(内存)的,是与文件自己直接操做的,而字符流在操做的时候是使用到缓冲区的安全

     字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串。网络

  4.什么是java序列化,如何实现java序列化?或者请解释Serializable接口的做用。session

     序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操做。

     将须要被序列化的类实现Serializable接口,该接口没有须要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,而后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就能够将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

  Serializable接口的做用:标注该对象是可被序列化的

   5.描述一下JVM加载class文件的原理机制? 

    JVM(java虚拟机)中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

   6.heap和stack有什么区别。

      heap是堆,stack是栈

      stack的空间是由操做系统自动分配和释放的,heap的空间是手动申请和释放的, heap经常使用new关键词来分配。

      stack空间有限,heap的空间是很大的自由区

    7.GC是什么? 为何要有GC?

       GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会致使程序或系统的不稳定甚至崩溃,Java提供的GC功能能够自动监测对象是否超过做用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操做方法。

    8.垃圾回收的优势和原理。并考虑2种回收机制。

       垃圾回收使Java程序员在编写程序的时候再也不须要考虑内存管理。由于有垃圾回收的机制,java中的对象不会再有“做用域”的概念。

       垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存

       垃圾回收一般是一个单独低级别的线程

       回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收      (回答这四个就应该够HR喝一壶了。)

     9.垃圾回收器的基本原理是什么?垃圾回收器能够立刻回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

    当程序员建立对象时,GC(垃圾回收器)就开始监控这个对象的地址、大小以及使用状况。

    GC采用有向图的方式记录和管理堆(heap)中的全部对象

    能够。

        程序员能够手动执行System.gc();通知GC运行,可是根据java语言规范并不保证GC必定会执行

      10.何时用assert。

     assertion(断言),是在软件开发过程当中经常使用的调试方式。不少语言都是支持这种机制

         它是程序中的一条语句,对一个boolean进行检查。

    一个正确程序必须保证这个boolean表达式值是true;若是该值是false,说明程序已经处于不正确状态下。系统将给处警告或者退出

         assertion的检查一般是关闭的。

   dome:

package com.huawei.interview;

public class AssertTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0;
		for(i=0;i<5;i++) {
			System.out.println(i);
		}
		//假设程序不当心多了一句--i;
		--i;
		assert i==5;
	}
}

 

  

 

      11.java中会存在内存泄漏吗,请简单描述。

           会。如:int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会形成溢位,致使错误

  12.能不能本身写个类,也叫java.lang.String?

          能够但在应用的时候,须要用本身的类加载器去加载,不然,系统的类加载器永远只是去加载jre.jar包中的那个java.lang.String。

  13.Spring AOP 的原理。

    Aop(Aspect Oriented Programming),也就是面向方面编程技术,aop基于ioc的基础。是对oop的有益补充。

    AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,全部大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。

  14.Spring怎么实现控制翻转(原理)

 依赖注入让 Spring Bean 以被指文件组织在一块儿,而不是以硬编码的方式耦合在一块儿。程序完成无须理会被调用者的实现,也不无须主动定位工  厂,这是最好的解耦方式。实例之间的依赖关系由 IoC 容器负责管理。

15.Scope的做用域

  默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、global session做用域。

 scope="prototype"多例。再配置bean的做用域时,它的头文件形式以下:

<bean id="role" class="com.web.xhaoAction" scope="singleton"/>

 

   16.一个项目加载缓慢,spring怎么解决问题。

   1.扫描注解Bean

    写比较精确的扫描路径,

   2.延迟加载你的bean

    常见的方式是在配置文件中在<beans>上加:default-lazy-init="true" 

   3.删除无用属性

   4.项目分模块开发

相关文章
相关标签/搜索