ssh面試題總結

題目1:Hibernate工作原理及為什么要用?

原理:

hibernate,通過對jdbc進行封裝,對?java類和 關系數據庫進行mapping,實現了對關系數據庫的面向對象方式的操作,改變了傳統的jdbc + sql操作數據的方式,從而使開發人員可以話更多精力進行對象方面的開發

?

1.讀取并解析配置文件

2.讀取并解析映射信息,創建SessionFactory

3.打開Sesssion

4.創建事務Transation

5.持久化操作

6.提交事務

7.關閉Session

8.關閉SesstionFactory

?

為什么要用:

1. ???對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。

?

2. ???Hibernate是一個基于JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

?

3. ???hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系數據庫,從一對一到多對多的各種復雜關系。

?

題目2: 什么是Hibernate延遲加載?

延遲加載機制是為了避免一些無謂的性能開銷而提出來的,所謂延遲加載就是當在真正需要數據的時候,才真正執行數據加載操作。在Hibernate中提供了對實體對象的延遲加載以及對集合的延遲加載,另外在Hibernate3中還提供了對屬性的延遲加載。

?

題目3:Hibernate中類之間的關聯關系有幾種?(如:一對多、多對多的關系)

??many-to-one、one-to-many、many-to-many、 one-to-one

?

題目4: 說下Hibernate的緩存機制

一、hibernate一級緩存

(1)hibernate支持兩個級別的緩存,默認只支持一級緩存;

(2)每個Session內部自帶一個一級緩存;

(3)某個Session被關閉時,其對應的一級緩存自動清除;

二、hibernate二級緩存

(1) 二級緩存獨立于session,默認不開啟;

題目5: Hibernate的查詢方式

本地SQL查詢、Criteria、Hql

?

題目6: 如何優化Hibernate?

1.使用雙向一對多關聯,不使用單向一對多

2.不用一對一,用多對一取代

3.配置對象緩存,不使用集合緩存

?

題目7: Struts工作機制?為什么要使用Struts?

工作機制:

?

?

Struts的工作流程:

在web應用啟動時就會加載初始化ActionServlet,ActionServlet從

struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象

當ActionServlet接收到一個客戶請求時,將執行如下流程.

????-(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在就返回請求路徑無效信息;

????-(2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中;

????-(3)根據配置信息決定是否需要表單驗證.如果需要驗證,就調用ActionForm的validate()方法;

????-(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象, 就表示表單驗證成功;

????-(5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的 ???????????????????Action實例不存在,就先創建這個實例,然后調用Action的execute()方法;

????-(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給 ActionForward對象指向的JSP組件;

????-(7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;

?

為什么要用:

1.?JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂。

2.?基于Struts開發的應用:

不用再考慮公共問題

專心在業務實現上

結構統一,易于學習、維護

新手也可寫出好程序

?

?

題目10:為什么要用spring?

Spring是一個輕量級的IOC和AOP框架。

??IOC(控制反轉)意味著將你設計好的類交給系統去控制,而不是在你的類內部控制。這稱為控制反轉

??AOP(面向切面),它將那些影響多個類的行為封裝到可重用的模塊中,面向對象是把問題從同類事物中抽象出來,面向切面是把問題從不同類問題中抽象出來。

?

1.?hibernateget()與load()區別

 請注意如果沒有匹配的數據庫記錄,load()方法可能拋出無法恢復的異常(unrecoverable exception)。 如果類的映射使用了代理(proxy),load()方法會返回一個未初始化的代理,直到你調用該代理的某方法時才會去訪問數據庫。 若你希望在某對象中創建一個指向另一個對象的關聯,又不想在從數據庫中裝載該對象時同時裝載相關聯的那個對象,那么這種操作方式就用得上的了。 如果為相應類映射關系設置了batch-size, 那么使用這種操作方式允許多個對象被一批裝載(因為返回的是代理,無需從數據庫中抓取所有對象的數據)。?如果你不確定是否有匹配的行存在,應該使用get()方法,它會立刻訪問數據庫,如果沒有對應的行,會返回null。

?

17.??[Hibernate題目]判斷題:使用save/persist一個對象時,便立即向數據庫發送執行insert sql語句?

1)?persist把一個瞬態的實例持久化,但是并"不保證"標識符被立刻填入到持久化實例中,標識符的填入可能被推遲到flush的時間。

2)?persist"保證"當它在一個transaction外部被調用的時候并不觸發一個Sql Insert,這個功能是很有用的。

3)?save會立即執行Sql insert,不管是不是在transaction內部還是外部.

?

18.[Hibernate題目]:指出一下代碼哪里錯誤使用了Hibernate。?
背景簡介:Board是一個實體類,id是它的主鍵,namedescription是他的兩個屬性。BoardDaoBoard實體的數據訪問對象,BoardBo是業務對象,用戶提交變更Board對象的請求,由StrutsBoardAction接收,調用BoardBo處理。HibernateUtil.currentSession()用于返回當前請求的Session對象。

1.?//數據訪問層代碼:BoardDao.java ??

2.?????public?Board?loadBoard(Long?id)?{ ??

3.?????????Session?session?=?HibernateUtil.currentSession();? ??

4.?????????return?session.load(Board.class,?id); ??

5.?????} ??

6.?????public?void?updateBoard(Board?board)?{ ??

7.?????????Session?session?=?HibernateUtil.currentSession();? ??

8.?????????session.update(board); ??

9.?????} ??

10.???

11.?????//業務對象層代碼:BoardBo.java? ??

12.?????private?BoardDao?boardDao; ??

13.?????public?void?updateBoard(Long?id,?String?name,?String?description)?{ ??

14.?????????Board?board?=?boardDao.loadBoard(id); ??

15.?????????board.setName(name); ??

16.?????????board.setDescription(description); ??

17.?????????boardDao.updateBoard(board); ??

18.?????} ??

19.???

20.?????//Web控制器代碼:BoardAction.java ??

21.?????private?BoardBo?BoardBo; ??

22.?????public?ActionForward?execute( ??

23.?ActionMapping?mapping,? ??

24.?ActionForm?form, ??

25.?HttpServletRequest?request,? ??

26.?HttpServletResponse?response)?throws?Exception?{ ??

27.?????????String?id?=?request.getParameter("id"); ??

28.?????????String?name?=?request.getParameter("name"); ??

29.?????????String?description?=?request.getParameter("description"); ??

30.?????????boardBo.updateBoard(id,?name,?description); ??

31.?????????return?mapping.findForward("update-success"); ??

32.?????}??

6.????public void updateBoard(Board board) { ??

7.????????Session session = HibernateUtil.currentSession(); ???

Transaction t=session.beginTransaction();

8.????????session.update(board); ??

t.commit();

9.????}???

?

簡單敘述一下SpringBeanFactoryApplicationContext的差別

使用BeanFactory從xml配置文件加載bean:

import?org.springframework.beans.factory.xml.XmlBeanFactory;
import?org.springframework.core.io.FileSystemResource;

public?class?XmlConfigWithBeanFactory?{

????public?static?void?main(String[]?args)?{
????????XmlBeanFactory?factory?=?new?XmlBeanFactory(new?FileSystemResource(
????????????????"build/beans.xml"));

????}
}

????使用ApplicationConText從xml配置文件加載bean:

public?class?XmlConfigWithApplication{

????public?static?void?main(String[]?args){
????????ApplicationContext?application?=?new?ClassPathXmlApplicationContext(beans.xml"));
?????????application.getBean("BeanName");
????}
}

簡而言之,BeanFactory提供了配置框架和基本的功能, 而 ApplicationContext為它增加了更強的功能,這些功能中的一些或許更加接近J2EE并且圍繞企業級應用。一般來說,ApplicationContext是 BeanFactory的完全超集, 任何BeanFactory功能和行為的描述也同樣被認為適用于ApplicationContext

??相對于BeanFactory而言,ApplicationContext 提供了以下擴展功能.

??(a) 國際化支持 ?(b) 資源訪問

??(c) 事件傳播 ?(d) 多實例加載

2.?寫一段程序,使用springAPI讀取classpath下的一個xml文件,并解析

(1)Resource resource=new ClassPathResource("appcontext.xml");

???BeanFactory factory=new XmlBeanFactory(resource);

?

???(2)ClassPathXmlApplicationContext appcontext=new ClassPathXmlApplicationContext("appcontext.xml");

??BeanFactory factory=(BeanFactory)appcontext;

?

4.?說說在hibernate中使用Integer做映射和使用int做映射之間有什么差別?

Integer?? codeint?? code;的區別:
Integer是對象.???? code?? =?? null;???對象可以為空.??
int???是普通類型,?????不可能?? =?? null.??????
根據你的數據庫code是可以空的,???故應該映射成Integer.????
你沒理由hbm.xml里寫Integer,???類里卻寫int

?

(1)使用Spring如何簡化了Hibernate編碼?

通過org.springframework.orm.hibernate3.support.HibernateDaoSupport類支持數據庫操作,且封裝了事務.

public class AccountDAO extends HibernateDaoSupport ??implements IAccountDAO{

?

(2)Spring如何與Struts集成?

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

?

<struts-config>

??<data-sources />

??<form-beans >

????<form-bean name="regForm" type="demo.form.RegForm" />

?

??</form-beans>

?

??<global-exceptions />

??<global-forwards />

??<action-mappings >

????<action

??????attribute="regForm"

??????name="regForm"

??????path="/reg"

??????scope="request"

??????type="org.springframework.web.struts.DelegatingActionProxy">

??????<forward name="ok" path="/ok.jsp" />

????</action>

??</action-mappings>

?

??<message-resources parameter="demo.ApplicationResources" />

??<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

??????<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />

??</plug-in>????

</struts-config>

?

(3)如何使用Spring2.0實現聲明式事務?

<!--通用事務管理器-->

<bean id="TransactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

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

</bean>

?

<!--聲明一個通知,用以指出要管理哪些事務方法及如何管理-->

<tx:advice id="txAdvice" transaction-manager="TransactionManager">

<tx:attributes>

<!--?get/load/search開頭的方法要求只讀事務?-->

<tx:method name="get*" propagation="SUPPORTS"

read-only="true" />

<tx:method name="load*" propagation="SUPPORTS"

read-only="true" />

<tx:method name="search*" propagation="SUPPORTS"

read-only="true" />

<!--?對其它方法要求事務?-->

<tx:method name="*" propagation="REQUIRED" />

</tx:attributes>

</tx:advice>

?

<!--聲明一個config,用以將通知和目標業務類關聯起來-->

<aop:config>

<!--?添加事務支持,因為前面配置的transactionManager是專對Hibernate的事務管理器-->

<aop:pointcut id="bizMethods" expression="execution(* demo.*.*(..))" />

<!--?織入?-->

<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />

</aop:config>

?

(4)依賴注入的好處是?

程序可擴展性更強;

利于并行開發;

?

(5)Spring怎么實現依賴注入?

<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

?

????<bean id="userdao" class="demo.dao.UserDAO"/>

????

????<bean id="usermanager" class="demo.biz.UserManager">

????<property name="userdao" ref="userdao"/>

????</bean>

</beans>

?

(6)“面向方面編程”的好處是?

將程序中涉及的公共問題集中解決

?

(7)SQL相比,HQL有哪些特點?

HQL是面向對象的查詢語言。select Fw表示查詢Fw對象

?

(8)如何配置單向多對一關聯?

<class name="Jd" table="TBL_JD">

????????<id name="jdid" column="jdid" type="long">

????????????<generator class="identity" />

????????</id>

????????<property name="jdname" column="jd" type="string" />

????????<many-to-one name="qx" class="Qx" column="qxid" />

</class>

?

(9)如何配置單向一對多關聯?

<class name="Qx" table="TBL_QX">

????????<id name="qxid" column="qxid" type="long">

????????????<generator class="native" />

????????</id>

????????<property name="qxname" column="qx" type="string" />

????????<set name="jds" >

<key column="qxid" />

<one-to-many class="Jd" />

????????</set> ???????

</class>

?

?

(10)如何配置雙向一對多關聯?

<class name="Jd" table="TBL_JD">

????????<id name="jdid" column="jdid" type="long">

????????????<generator class="identity" />

????????</id>

????????<property name="jdname" column="jd" type="string" />

????????<many-to-one name="qx" class="Qx" column="qxid" />

</class>

<class name="Qx" table="TBL_QX">

????????<id name="qxid" column="qxid" type="long">

????????????<generator class="native" />

????????</id>

????????<property name="qxname" column="qx" type="string" />

????????<set name="jds" >

<key column="qxid" />

<one-to-many class="Jd" />

????????</set> ???????

</class>

轉載于:https://www.cnblogs.com/hunrry/p/9414997.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SaltStack的salt-ssh使用及LAMP狀態設計部署

SaltStack的salt-ssh使用及LAMP狀態設計部署 1、salt-ssh的使用 官方文檔&#xff1a;https://docs.saltstack.com/en/2016.11/topics/ssh/index.html &#xff08;1&#xff09;安裝salt-ssh [rootlinux-node1 ~]# yum install -y salt-ssh&#xff08;2&#xff09;配置salt-…

程序員筆記(知識)管理的一點經驗

記筆記這件事&#xff0c;也許在很多人看來&#xff0c;再普通、簡單不過了——從小老師就教育我們要這么做。不同的人有不同的方式&#xff0c;我們最終的目的&#xff0c;還是希望不要停留在只是記錄這一層面上&#xff0c;而是將它們轉變為我們的知識。作為一個程序員&#…

xbox可以錄視頻聲音嗎_什么是Xbox Live Gold,它值得嗎?

xbox可以錄視頻聲音嗎If you have an Xbox One or Xbox 360, Microsoft’s Xbox Live Gold service is required to play multiplayer games online. A subscription costs $10 per month or $60 per year. Xbox Live Gold also includes additional benefits, like free games…

windows - mysql

Windows:(mysql)操作:0.下載安裝mysql www.mysql.org downloads community 5.7.21 下載5.6 Microsoft Windows 解壓到C: C:\mysql-5.6.39-winx64 C:\mysql-5.6.39-winx64\bin bin/mysql 客戶端 bin/mysqld 服務端 設置環境變量: …

顯示器選三星還是飛利浦_如何為飛利浦色相燈設置計時器

顯示器選三星還是飛利浦Maybe you want to turn off your Philips Hue lights after a certain amount of time has passed, or have them blink as a reminder. Whatever your needs, here’s how to set a timer for your Philips Hue lights to have them automatically tur…

PIE SDK與OpenCV結合說明文檔

1.功能簡介 OpenCV是基于BSD許可&#xff08;開源&#xff09;發行的跨平臺計算機視覺庫&#xff0c;可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C 類構成&#xff0c;同時提供了Python、Ruby、MATLAB等語言的接口&…

js的棧堆與淺拷貝、深拷貝的理解

一&#xff1a;什么是堆棧&#xff1f; 我們都知道&#xff1a;在計算機領域中&#xff0c;堆棧是兩種數據結構&#xff0c;它們只能在一端(稱為棧頂(top))對數據項進行插入和刪除。 堆&#xff1a;隊列優先,先進先出&#xff1b;由操作系統自動分配釋放 &#xff0c;存放函數的…

python面向對象基礎語言進階

在此感謝前輩們的指導&#xff1a;http://python.jobbole.com/80955/ https://www.cnblogs.com/wupeiqi/p/4766801.htmlhttps://www.cnblogs.com/paomaliuju/p/5122761.html https://www.cnblogs.com/goser/articles/7097728.html http://www.cnblogs.com/alex3714/articles/52…

ea 備份碼是什么_EA的原始訪問是什么,值得嗎?

ea 備份碼是什么EA’s Origin Access gives you access to more than 70 games, discounts, and new EA games before they’re released for a monthly (or yearly) subscription fee. But is it really worth it? EA的Origin Access可讓您訪問70多種游戲&#xff0c;打折游戲…

Https 加密原理分析

眾所周知&#xff0c;HTTP 協議通過明文傳輸&#xff0c;是不安全的。于是&#xff0c;就在 HTTP 協議的基礎上&#xff0c;進行了數據加密&#xff0c;也就誕生了 HTTPS 協議。注意&#xff0c;HTTPS 并不是一個新的協議&#xff0c;它只不過是在 HTTP 的基礎上加了一層 TLS (…

JS框架_(JQuery.js)純css3進度條動畫

百度云盤  傳送門  密碼&#xff1a;wirc 進度條動畫效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加熱點快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手機上的便攜式Wi-Fi熱點很棒&…

提高關鍵詞排名的28個SEO技巧

28個讓關鍵詞排名明顯改觀的SEO技巧&#xff1a; 關鍵詞位置、密度、處理 URL中出現關鍵詞&#xff08;英文&#xff09; 網頁標題中出現關鍵詞&#xff08;1-3個&#xff09; 關鍵詞標簽中出現關鍵詞&#xff08;1-3個&#xff09; 描述標簽中出現關鍵詞&#xff08;主關鍵…

SQLI DUMB SERIES-16

&#xff08;1&#xff09;無論怎么輸入&#xff0c;都沒有回顯&#xff0c;但當輸入 admin")#時&#xff0c;顯示登錄成功。若通過其他方法獲取數據庫的用戶名&#xff0c;可通過這個方法登錄成功。 &#xff08;2&#xff09;獲取其他信息可用考慮時間延遲注入。方法同1…

如何在YouTube視頻上禁用注釋

YouTube has that betcha-can’t-watch-just-one appeal to it, which is why YouTube’s annoyances become so pronounced the more you use it. Many of these features, such as annotations can be permanently disabled, making for a more enjoyable viewing experience…

Linux目錄配置及應放置的內容

Linux目錄配置及應放置的內容 /bin&#xff1a;系統有很多放置執行文件的目錄&#xff0c;但/bin比較特殊。因為/bin放置的是在用戶維護模式下還能夠被操作的命令。在/bin下面的命令可以被root與一般賬號所使用&#xff0c;主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命…

快速實現一個Http回調組件

2019獨角獸企業重金招聘Python工程師標準>>> 快速實現一個Http回調組件 一、前情回顧 ? 我們平時在使用一些庫的時候&#xff0c;會遇到一些看起來很舒服的寫法&#xff0c;用起來感覺很簡單&#xff0c;而且寫法也很優雅&#xff0c;比如OkHttp&#xff0c;或者是…

MyBatis緩存通俗易懂

1.1 mybatis緩存介紹 如下圖&#xff0c;是mybatis一級緩存和二級緩存的區別圖解&#xff1a; Mybatis一級緩存的作用域是同一個SqlSession&#xff0c;在同一個sqlSession中兩次執行相同的sql語句&#xff0c;第一次執行完畢會將數據庫中查詢的數據寫到緩存&#xff08;內…

DVbbs8.2入侵思路與總結

dvbbs8.2后比較變態&#xff0c;目前還沒有特別好的方法&#xff0c;外面有人提到一種方法就是直接上傳php文件或者其它服務器支持文件&#xff0c;這個也是一個思路&#xff0c;不過很多時候&#xff0c;單獨的服務器不會支持這么多。dvbbs禁用了asp和asp.net的上傳&#xff0…

Python基礎教程:Python pass語句詳解

2019獨角獸企業重金招聘Python工程師標準>>> Python pass 語句 Python pass是空語句&#xff0c;是為了保持程序結構的完整性。 pass 不做任何事情&#xff0c;一般用做占位語句。 Python 語言 pass 語句語法格式如下&#xff1a; 實例&#xff1a; 學習從來不是一個…