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.項目分模塊開發

相關文章
相關標籤/搜索