程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java面試第三彈,java面試

java面試第三彈,java面試

編輯:JAVA綜合教程

java面試第三彈,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 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接口的作用。

     序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作。

     將需要被序列化的類實現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.項目分模塊開發 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved