java面试第三弹

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

    首先要确定是否在同一个工作组内,然后看看是否有防火墙之类的,最后确定文件是否已经共享

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

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

    dome:

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 [email protected] where [email protected] -执行的第一个操作,转账出钱,减去转出的金额
update bb set [email protected] where [email protected] --执行第二个操作,接受转账的金额,增加
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接口的作用。

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

     将需要被序列化的类实现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.项目分模块开发 

时间: 2024-10-24 23:38:02

java面试第三弹的相关文章

java面试第四弹(算法和编程)思路

1.编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. 创建两个FileManager分别是a.txt和b.txt 参数需要创建一个char数组来进行回车符分割和空格分割 FileManager a = new FileManager("a.txt",new char[]{'\n'}); FileManager b = new FileManager("b.txt

java面试第三天

类和对象: 类:主观抽象,是对象的模板,可以实例化对象----具有相同属性和行为的对象的集合. 习惯上类的定义格式: package xxx; import xxx; public class Xxxx{ 属性 ······; 构造器 ······; 方法 ······; } 区分实例变量以及类变量,两者都有初始值,或在定义时候初始化或者在构造函数中初始化,而局部变量没有初始值,必须定义时候初始化. 定义属性:实例变量 格式:[ 修饰符 ]  类型 变量名  [ = ? ] 实例变量定义在类中但

Java面试(三)

1  java中Exception 和 Error 区别 都是Throwable的子类.RuntimeException继承自Exception. Error和RuntimeException及其子类是未检查异常:其他异常是受检查异常. Exception:需要捕获或者需要处理的异常.用于用户程序可以捕获的异常. Error:定义了不期望被用户程序捕获的异常(系统崩溃,虚拟机错,内存不足,方法调用栈溢出,比如StackOverFlowError, OutOfMemoryError).系统级的错误

Java面试准备之JVM详细研究三(类加载机制)

类加载过程 一个类从编写完成后,编译为字节码之后,它要装载进内存有七个阶段: 加载 => (验证-> 准备-> 解析)=> 初始化=> 使用=> 卸载 括号中的三个步骤可以整合成为 “连接”步骤.其中的步骤并不是一个阶段结束,一个阶段才开始的.只是说他们的开始阶段基本遵循此顺序(解析阶段更是可能在使用的时候才发生,目的是配合动态绑定),这些阶段都是互相交叉的混合式进行的,通常会在一个阶段执行过程中调用或激活另一个阶段. 1.加载 ”加载“的过程是”类加载“过程的一个阶段

春节过后就是金三银四求职季,分享几个Java面试妙招,轻松搞定HR!

春节过后就是金三银四,分享几个Java面试妙招,轻松搞定HR!2020年了,先祝大家新年快乐!今年IT职位依然相当热门,特别是Java开发岗位.软件开发人才在今年将有大量的就业机会.春节过后,金三银四求职季到来,下面教你8个"妙招",希望能帮你顺利面试成功.1.知道如何写算法如果你申请的是软件工程师的工作,那么显然你需要知道如何编码.写代码脚本其实与写算法来解决软件问题略有不同.用人单位可能会提出这样的问题,"写一个算法,可以从链表中找到某个元素,并将此元素挪到列表末尾.&q

Java面试宝典-2017

Java面试宝典2017版 一. Java基础部分...................................................................................................... 7 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?..... 7 2.Java有没有goto?.......................................................

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

转:最近5年133个Java面试问题列表

最近5年133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我初入职场的时候,类似于 Vector 与 Array 的区别.HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在.如今,你将会被问到许多 Java 程序员都没有看过的领域,如 NIO,

Android Window PhoneWindow Activity学习心得--第三弹

Android Window  PhoneWindow Activity学习心得--第三弹 前面 我们完成了从Activity到PhoneWindow的整体跨度 正如我们所知道的与Activity组件关联的一个应用程序窗口视图对象关联一个ViewRoot对象,而将 一个Activity组件的应用程序窗口视图对象与一个ViewRoot对象关联是通过该Activity组件所使用的 窗口管理器(WindowManager)来执行的. 在我们初始化DecorView完成之后,我们需要关联应用程序窗口视图