1. 程式人生 > >java面試題04

java面試題04

加載數據 server 輸入輸出流 int() ati 調用 ble dba window

1.就你所熟悉的銀行業務面說一下,越詳細越好

銀行經驗:手機銀行 網上銀行經驗 怎麽支付 轉賬 了解基本業務

2.了解工作流的控制,審批流程以及帳務處理麽?

java中怎麽實現工作流、審批流程,java怎麽實現報表功能?

web 項目整合 jbpm或者其他工作流組件

3.java開發web有幾種開發模式?你最熟悉哪種?

共有23中開發模式:

總體來說設計模式分為三大類:

創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、叠代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

其實還有兩類:並發型模式和線程池模式。

最熟悉的:單例模式

單例對象(Singleton)是一種常用的設計模式。在Java應用中,單例對象能保證在一個JVM中,該對象只有一個實例存在。

4.描述某些特殊功能你認為要從什麽包實現?

java.util是JAVA的utility工具包,包含一些使用工具類,如定義系統特性、使用與日期日歷相關的函數等。

java.lang是JAVA的language核心語言包;如String、Math、Integer、System、Thread,提供常用的功能。特殊之處是不需要導入,是作為默認導入的包。

java.awt是JAVA的abstractwindow toolkit,抽象窗口工具包;包含了構成抽象窗口共具體的多個類,這些類用於構建和管理應用程序的圖形用戶(GUI)。

java.applet是創建APPLET的必須包;包含applet運行時所需要的一些類。

java.net是JAVA有關網絡操作的包。

java.io是JAVA的輸入輸出流的包。

java.sql是JAVA的數據庫操作包。

javax.swing是新的界面包。

java.applet 支持小應用程序的結構

java.awt 提供圖形用戶接口的能力

java.awt.color 支持顏色空間和外形

java.awt.datatransfer 與系統的剪貼板交換數據

java.awt.dnd 支持拖拉操作

java.awt.event 處理事件

java.awt.font 描述多種字體類型

java.awt.geom 允許你使用幾何形狀

java.awt.im 允許編輯組件中日文,中文,韓文的的輸入

java.awt.im.spi 支持二選一的輸入設備 (在java 2, v1.3中加入) java.awt.image 處理圖像

java.awt.image.renderable 支持獨立顯示圖像

java.awt.print 支持一般的打印功能

java.beans 允許你建立軟件組件

java.beans.beancontext 為bean 提供可執行環境

java.io 輸入輸出數據

java.lang 提供核心功能

java.lang.ref 使能與垃圾回收交互

java.lang.reflect 運行時分析代碼

java.math 處理大整數和十進制數

java.net 支持網絡功能

java.rmi 支持遠程方法調用

java.rmi.activation 激活永久對象

java.rmi.dgc 管理分布垃圾回收

java.rmi.registry 映射名稱到遠程對象引用

java.rmi.server 支持遠程方法調用

java.security 處理證書,密鑰,摘要,簽名和其他安全功能

java.security.acl 管理訪問控制列表

java.security.cert 分析和管理證書

java.security.interfaces 為DSA(數字簽名算法)定義接口

java.security.spec 設定密鑰和算法參數

java.sql 與SQL(結構化查詢語言)數據庫交互

java.text 格式化,查詢和處理文本

java.util 包含一般工具

java.util.jar 生成和打開JAR文件

java.util.zip 讀寫壓縮或解壓縮文件

5.一般怎麽調試java程序?

(1)system.out.print()輸出語句調試

(2)使用MyEclipse/Eclipse程序的Debug調試,設置斷點,運行程序,觀察不變量變化;

6.熟悉幾種分布工具?各自是怎麽發布的?

tomcat

部署方法:

(1)直接將web項目文件件拷貝到webapps 目錄中

Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啟動時,會加載所有這個目錄下的應用。所以可以將JSP程序打包成一個 war包放在目錄下,服務器會自動解開這個war包,並在這個目錄下生成一個同名的文件夾。一個war包就是有特性格式的jar包,它是將一個web程序的所有內容進行壓縮得到。

webapps這個默認的應用目錄也是可以改變。打開Tomcat的conf目錄下的server.xml文件,找到下面內容:

unpackWARs="true"

xmlValidation="false" xmlNamespaceAware="false">

將appBase修改即可。

(2)在server.xml中指定

在Tomcat的配置文件中,一個Web應用就是一個特定的Context,可以通過在server.xml中新建Context裏部署一個JSP應用程序。打開server.xml文件,在Host標簽內建一個Context,內容如下:

path是虛擬路徑;

docBase 是應用程序的物理路徑;

workDir 是這個應用的工作目錄,存放運行時生成的與這個應用相關的文件;

debug 則是設定debug level, 0表示提供最少的信息,9表示提供最多的信息

privileged設置為true的時候,才允許Tomcat的Web應用使用容器內的Servlet

reloadable 如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,可以在不重起tomcat的情況下改變應用程序,實現熱部署

antiResourceLocking 和antiJARLocking 熱部署是需要配置的參數,默認false避免更新了某個webapp,有時候Tomcat並不能把舊的webapp完全刪除,通常會留下WEB-INF/lib下的某個jar包,必須關閉Tomcat才能刪除,這就導致自動部署失敗。設置為true,Tomcat在運行對應的webapp時,會把相應的源文件和jar文件復制到一個臨時目錄裏。

(3)創建一個Context文件

在conf目錄中,新建 Catalina\localhost目錄,在該目錄中新建一個xml文件,名字不可以隨意取,要和path後的那個名字一致,按照下邊這個path的配置,xml的名字應該就應該是hello(hello.xml),該xml文件的內容為:

tomcat自帶例子如下:

privileged="true" antiResourceLocking="false" antiJARLocking="false">

7.Easyui中的控制datagrid在加載數據的時候會出現兩次請求後臺數據的情況,什麽原因?

html代碼中利用class聲明了datagrid,導致easyUI解析class代碼的時候先解析class聲明中的datagrid,這樣組件就請求了一次url;然後又調用js初始化代碼請求一次url。這樣導致了重復加載,解決的方法就是只用一種初始化方法來聲明easyUI組件以避免重復的提交請求,即刪除html中的class聲明(class="easyui-datagrid")或者采用延遲加載初始化:

init();

function init() {

$(‘#dic‘).datagrid({});

//延遲加載,否則頁面請求兩次

setTimeout(refreshDic, 100);

}

function refreshDic() {

$(‘#dic‘).datagrid({

queryParams: {

dictName

}

通過setTimeout實現延時請求,果斷不請求兩次了

為了那100毫秒頁面沒渲染的太難看,先初始化個簡單的datagrid。

延遲的毫秒數試過很多,最小95毫秒左右,不能再小了,否則還是請求兩次。

8.Oracle中字符串用什麽符號鏈接?Oracle是怎樣實現分頁的?

連接符號是:||

分頁:

select * from

(select a.*,rownum row_num from

(select * from mytable t order by t.id desc) a

) b

where b.row_num between startIndex and endIndex

9.Oraclewhere條件查詢和排序的性能比較?

10.解釋什麽是死鎖,如何解決Oracle中的死鎖?

死鎖:程序運行過程中,只有一個進程在運行,其他進程都在等待狀態,並且點擊進程的確定和保存按鈕,程序無反應,但是也不報錯,之中現象稱作死鎖。

解決方法:

1)用dba用戶執行以下語句

以下是代碼片段:

select username,lockwait,status,machine,program from v$session where sid in

(select session_id from v$locked_object)

如果有輸出的結果,則說明有死鎖,且能看到死鎖的機器是哪一臺。字段說明:

  Username:死鎖語句所用的數據庫用戶;

  Lockwait:死鎖的狀態,如果有內容表示被死鎖。

  Status: 狀態,active表示被死鎖

  Machine: 死鎖語句所在的機器。

  Program: 產生死鎖的語句主要來自哪個應用程序。

  2)用dba用戶執行以下語句,可以查看到被死鎖的語句。

select sql_text from v$sql where hash_value in

(select sql_hash_value from v$session where sid in

(select session_id from v$locked_object))

  A. kill掉這個死鎖的進程:

  alter system kill session ‘sid,serial#‘; (其中sid=l.session_id)

  B. 如果還不能解決:(linux)

select pro.spid from v$session ses, v$process pro where ses.sid=XX and ses.paddr=pro.addr;

其中sid用死鎖的sid替換:

exit

ps -ef|grep spid

其中spid是這個進程的進程號,kill掉這個Oracle進程。

11.怎麽創建一個視圖,視圖的好處,視圖可以控制權限嗎?

創建視圖語句:create or replace view teacher_view

as

select tname,sal from teacher

創建視圖要有視圖權限,否則不能創建。

12.ServletAPIForward()Redirect()的區別?

forward:轉發---是服務器端行為,攜帶請求數據,客戶端的Url顯示不改變,且客戶端只發送請求了一次

redirect:重定向----是客戶端行為,不攜帶請求數據,客戶端的Url顯示改變,且客戶端至少發送請求了兩次

13.如何查看在weblogic中已經發布的EJB?

可以使用管理控制臺,在它的Deployment中可以查看所有已發布的EJB.

在weblogic中開發消息Bean時的persistent與non-persisten的差別:persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現問題而JMS服務器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄

14.spring+Hibernate中委托方案怎麽配置?

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="${jdbc.driverClassName}"/>

<property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.username}"/>

<property name="password" value="${jdbc.password}"/>

</bean>

<!-- 配置會話工廠sessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"></property>

<!-- 配置hibernate映射文件以及hiberbnate配置文件的參數 -->

<!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->

<property name="mappingDirectoryLocations" value="classpath:com/news/pojo"></property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.show_sql">true</prop>

<prop key="hibernate.format_sql">true</prop>

<prop key="hibernate.connection.autocommit">true</prop>

<prop key="hibernate.hbm2ddl.auto">update</prop>

<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>

<!-- 配置當前事務的Session -->

<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>

<prop key="hibernate.javax.persistence.validation.mode">none</prop>

</props>

</property>

</bean>

15.求小王在2017年賣給北京海澱區客戶財務軟件的總套數?設計出表之間的關系,並寫出sql語句。

表一:user(員工表)

字段:uid(員工id,主鍵) uname(員工姓名) utel(員工聯系方式)

表二 district 地區表:

字段:did(地區did、主鍵) 地區姓名(dname)

表三:sal表

字段:sid(銷售標號、主鍵) syear(時間) scount(數量) sdid(銷往地區,外鍵關聯district的主鍵did) suid(銷售人員,關聯外鍵user的主鍵uid)

select count(0) ‘銷售數量’,uname ‘銷售人員’

from (sal s left join district d on sdid =did)

left join user u on suid=uid

where d.dname=’海澱區’ and u.uname=’小王’ and s.syear=”2017”;

16.寫個程序,實現對新聞的增刪改查,新聞包括:新聞標題、種類、內容、附件,不同種類按照Tab展現,點擊Tab時必須顯示相應類型的新聞列表,點擊列表後,彈出頁面,顯示新聞的項目內容,附件可以下載。

17.你對加班怎麽看?能否出差?

18.目前北京的項目要求較高,你是否有意向去濱海新區發展?

java面試題04