ORACLE分頁
-- 要求根據年齡排序後的 第三 行到第6 行的數據 (?) 分頁語句
select t.* from (
select t1. *, rownum num from
(
select * from t_student order by age desc
) t1 where rownum<=6
) t where t.num>=3javascript
MYSQL分頁
select * from dept order by deptno desc limit 3,3;html
中軟面試前端
1.先自我介紹一下你本身,說一下你最近作的項目吧?java
2.集合框架有哪些,能夠說一下,它們的接口,實現類嗎?mysql
接口:jquery
List特色:元素有順序,元素可重複 web
Set特色:元素無放入順序,元素不可重複面試
Map特色:元素按鍵值對存儲,無放入順序ajax
List接口有三個實現類:LinkedList,ArrayList,Vector spring
LinkedList,底層基於鏈狀,增刪快,查找慢;
ArrayList,Vector;基於數組的,增刪慢,查找快;
ArrayList,非線性安全的,效率高,Vector線性安全的,效率慢。
Set接口有:HashSet 和 linkedHashSet
Map接口有三個實現類:HashMap,HashTable,LinkeHashMap
HashMap非線程安全,高效,支持null;
HashTable線程安全,低效,不支持null
List,set 是 Collection接口下的兩個子接口
3.jquery的選擇器有哪些,說一下。屬性有哪些?
基本選擇器 l用法: $(‘#id’) 返回值:根據 id 屬性匹配一個標籤, 封裝成 jQuery 對象 n
層次選擇器用法: $(」form input」) 說明: 在給定的祖先元素下匹配全部後代元素 n
過濾選擇器 3.1). :first 用法: $(」tr:first」) ; 說明: 匹配找到的第一個元素
attr(name [,value]) 根據屬性名獲取屬性值或者設置一個屬性
removeAttr(name) 根據屬性名刪除對應的屬性
val([value]) 得到匹配元素的當前值或者設置其值
4.大數據的處理?假若有一千萬數據,你是怎麼樣處理的?
方an1:按主鍵分區 查詢條件是主鍵 則分表變快 若是查詢條件不是主鍵 則勢必比未分表更慢 每一個表分區union all關聯就能夠了
4.1 7. 怎麼在海量數據中找出重複次數最多的一個?
方an1:先作hash,而後求模映射爲小文件,求出每一個小文件中重複次數最多的一個,並記錄重複次數。而後找出上一步求出的數據中重複次數最多的一個就是所求(具體參kao前面的題)。
5.多線程。
5.1 sleep() 和 wait()有什麼區別? ? ? ?
Sleep 是指休眠給定的時間,當這個時間達到以後,線程會再次醒來。
Wait 是等待狀態,多長時間不清楚,由另外一個線程將其喚醒
5.2當一個線程進入一個對象的一個 synchronized方法後,其它線程是否可進入此對象的其它方法?
如只其它方法是同步方法,不能夠進入。若是不是能夠進入。
6.spring原理,hibernate 原理,struts原理。
struts原理:
1. 請求發送給 StrutsPrepareAndExecuteFilter
2. StrutsPrepareAndExecuteFilter 詢問 ActionMapper: 該請求是不是一個 Struts2 請求(便是否返回一個非空的 ActionMapping 對象)
3. 若 ActionMapper 認爲該請求是一個 Struts2 請求,則 StrutsPrepareAndExecuteFilter 把請求的處理交給 ActionProxy
4. ActionProxy 經過 Configuration Manager 詢問框架的配置文件,肯定須要調用的 Action 類及 Action 方法
5. ActionProxy 建立一個 ActionInvocation 的實例,並進行初始化
6. ActionInvocation 實例在調用Action的過程先後,涉及到相關攔截器(Intercepter)的調用。
7. Action 執行完畢,ActionInvocation 負責根據 struts.xml 中的配置找到對應的返回結果。調用結果的 execute 方法,渲染結果。在渲染的過程當中可使用Struts2 框架中的標籤。
8. 執行各個攔截器 invocation.invoke() 以後的代碼
9. 把結果發送到客戶端
spring原理
內部最核心的就是IOC了,
動態注入,讓一個對象的建立不用new了,能夠自動的生產,這其實就是利用java裏的反射
反射其實就是在運行時動態的去建立、調用對象,Spring就是在運行時,跟xml Spring的配置
文件來動態的建立對象,和調用對象裏的方法的 。
hibernate 原理
1.配置好hibernate的配置文件和與類對應的配置文件後,啓動服務器
2.服務器經過實例化Configeration對象,讀取hibernate.cfg.xml文件的配置內容,並根據相關的需求建好表或者和表創建好映射關係
3.經過實例化的Configeration對象就能夠創建sessionFactory實例,進一步,經過sessionFactory實例能夠建立session對象
4.獲得session以後,即可以對數據庫進行增刪改查操做了,除了比較複雜的全文搜索外,簡單的操做均可以經過hibernate封裝好的session內置方法來實現
5.此外,還能夠經過事物管理,表的關聯來實現較爲複雜的數據庫設計
SpringMVC 原理
1. 客戶端請求被spring前端控制器DispatcherServlet捕獲
2. 由DispatcherServlet控制器查詢HandlerMapping,找處處理請求的Controller
3. DispatcherServlet將請求提交到Controller
4. Controller調用業務邏輯處理後,返回ModelAndView
5. DispatcherServlet查詢對應的ViewResoler視圖解析器,結合ModelAndView來渲染視圖
6.將渲染的結果顯示到客戶
springmvc和struts2的對比
首先它們都web層的框架
spring mvc 開發效率比struts2 要高,springMVC 請求只實列化一次 struts2 沒請求一次都會實列化一次
springMVC 是基於方法級別的一種攔截設計
struts2 是基於類的設計
軟通面試:
一、<div id="item" class=""/>如何獲取它的值,若要增長內容「hello」,應該怎樣作?
用jquery和javascript實現
Var textValue = document.getElementById(「item」)
Console.log (textValue.value);
Var textValue = $(‘#id’)
Console.log(textValue.val())
二、String和StringBuffer哪一種處理效率更高?爲何?
String:長度給定不可變,當多個字符串聯合時要先轉爲StringBuffer,再聯合, 速度慢。 StringBuffer:長度可變,能夠將多個字符串值直接聯合,效率高
三、用javascript建立一個point對象,它有兩個屬性x,y,x賦值爲100,y賦值爲130,寫出關鍵代碼。
window.onload = function(){
var b = document.getElementById("point"); //根據id獲得一個元素,dom對象
var x=100;
var y =130;
}
<div id=」point」></div>
四、<div id="item" class=""/>要給它註冊一個點擊事件,該怎樣作?
$(function(){
$(‘#item’).click(function(){…………})
})
五、Spring的注入方式有哪幾種?
Setter Interface constructor 1 接口注入(不推薦)
2. getter,setter方式注入(比較經常使用) 3. 構造器注入(死的應用)
六、List和Set異同。?
一、List,Set都是繼承自Collection接口
二、List特色:元素有序,可重複 ,Set特色:元素無順序,不可重複(注意:元素雖然無放入順序,可是元素在set中的位置是有該元素的HashCode決定的, 其位置實際上是固定的)
三、List接口有三個實現類:LinkedList,ArrayList,Vector ,Set接口有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet
七、選取幾個權限後,點擊提交按鈕到tomcat,再到數據庫,談談它的運行過程,會發生什麼?
Tomcat是Servlet運行環境(容器),每一個servlet執行init(),service(),destory()
首先客戶發送一個請求,Servlet是調用service()方法對請求進行響應的
service()方法中對請求的方式進行了匹配,選擇調用doGet,doPost等這些方法,而後再進入對應的方法中調用邏輯層的方法,實現對客戶的響應
在Servlet接口和GenericServlet中是沒有doGet,doPost等等這些方法的,HttpServlet中定義了這些方法 必須實現doGet或doPost等這些方
八、c3p0和dbcp必須用?
不管如今是B/S或者是C/S應用中,都免不了要和數據庫打交道。在與數據庫交
互過程當中,每每須要大量的鏈接
DBCP有着比C3P0更高的效率,可是實際應用中,DBCP可能出現丟失
鏈接的可能,而C3P0穩定性較高。所以在實際應用中,C3P0使用較爲普遍。
九、jdbc的過程?它能替代hibernate嗎?
能夠 Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架
1、加載數據庫驅動 二、 建立並獲取數據庫連接 三、 建立jdbc statement對象
四、設置sql語句 5,設置sql語句中的參數(使用preparedStatement)
六、經過statement執行sql並獲取結果 7,對sql執行結果進行解析處理
八、釋放資源(resultSet、preparedstatement、connection)
十、你是怎樣處理中文亂碼?
1、JSP輸出中文的亂碼問題
緣由:沒有給JSP頁面制定顯示字符的編碼方式。
解決方法:
在JSP頁面頭部加上語句<%@page contentType="text/html;charset=utf-8"%>(在Servlet中使用httpServletResponse.setContentType("text/html;charset=utf-8")),最好同時在JSP頁面的head部分加上<meta http-equiv="Content-Type" content="text/html;charset=utf-8">。
2、獲取表單提交的數據時的中文亂碼問題
用request.getParameter("paramName")獲取表單提交中的數據,且表單數據中含有中文時,返回的字符串出現亂碼。
緣由:Tomcat的J2EE實現對錶單提交,即以POST方式提交的參數採用默認的ISO-8859-1來處理。
解決方法:
一是:轉換編碼,如String str = request.getParameter("chStr");String str = new String(str.getBytes("ISO-8859-1"),"utf-8")。此法在較大項目中不可行。
二是:讓全部頁面的請求都經過一個Filter,將處理字符集設置爲utf-8。
3、URL中的中文問題
緣由:Tomcat中以get方式提交的請求對query-string處理時採用了和post方法不同的處理方式。
解決方法:
打開Tomcat目錄下的/conf/server.xml文件,找到Connector塊,往其中添加URIEncoding="utf-8"/>,
4、數據庫訪問時的亂碼問題
在使用JDBC鏈接MySQL數據庫時,鏈接字符串寫成以下形式能夠避免一些中文問題:
jdbc://mysql://hostname:port/DBname?user=username&password=pwd&useUnicode=true&character Encoding=utf-8
十一、表單的校驗有前臺和後臺,前臺檢驗什麼?後臺校驗什麼?必須都要嗎?
前臺校驗不須要服務器返回數據的選項,例如密碼爲空啊,郵箱不合法啊,可是也須要後臺校驗,例如用戶名重複校驗,必須提交後臺查詢數據庫,返回是否重複。原則就是能前臺JS校驗的就前臺校驗,一來快捷,二來減小服務器的壓力。
十二、你知道有哪幾種表單提交方式?
get post一個用於獲取數據,一個用於修改數據
1.Post傳輸數據時,不須要在URL中顯示出來,而Get方法要在URL中顯示
2.Post傳輸的數據量大而Get方法因爲受到URL長度的限制
1三、談談你項目的權限管理?
缺陷限制:
數據庫裏用戶表其中一個屬性就是權限
用戶名 密碼 權限
aa ** 1
bb ** 2
cc ** 3
能夠在須要控制權限時對用戶對應的權限進行判斷
由於在用戶輸入用戶名和密碼後
須要經過判斷其權限來控制該用戶能進行哪些操做
因此你只要對用戶表中相應的權限字段進行判斷就能夠了
咱們曾作過個拍賣行的系統是用JAVA 鏈接ORACLE
就是經過這個對用戶進行控制的
1四、GET和POST有什麼異同?
一個用於獲取數據,一個用於修改數據
1.Post傳輸數據時,不須要在URL中顯示出來,而Get方法要在URL中顯示
2.Post傳輸的數據量大而Get方法因爲受到URL長度的限制,
1五、session和cookie異同?如何讓它們失效?Session.TimeOut = 30 半小時
1、session保存在服務器,客戶端不知道其中的信息;cookie保存在客戶端,服務器可以知道其中的信息。
2、session中保存的是對象,cookie中保存的是字符串。
cookie 和session的區別是:cookie數據保存在客戶端 硬盤,session數據保存在服務器端。
cookie 戶端訪問server端程序被調用被建立,而若是不設置過時時間,則表示這個cookie生命週期爲瀏覽器會話期間,
只要關閉瀏覽器窗口,cookie就消失了。關閉瀏覽器只會使存儲在客戶端瀏覽器內存中的session cookie失效,不會使服務器端的session對象失效。
禁用cookie 在瀏覽器中將cookie移除
JAVA 中讓session失效有哪些方法?
答:session.invalidate();
cookie 和session 的區別:
一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
二、cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
三、session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE(相對session能夠減輕服務器性能)。
四、單個cookie保存數據有限(不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。)
1六、左邊表數據10條,右邊表數據少5條,用左鏈接結果會怎樣?
1七、hibernate中get和load方法的異同?
區別:總之對於get和load的根本區別,一句話,hibernate對於load方法認爲該數據在數據庫中必定存在,能夠放心的使用代理來延遲加載,若是在使用過程當中發現了問題,就拋異常;而對於get方法,hibernate必定要獲取到真實的數據,不然返回null。
相同:加載數據庫裏面的對象
1八、try{ return;}catch(){}finally{},執行過程?
1、無論有木有出現異常,finally塊中代碼都會執行;
2、當try和catch中有return時,finally仍然會執行;
3、finally是在return後面的表達式運算後執行的(此時並無返回運算後的值,而是先把要返回的值保存起來,管finally中的代碼怎麼樣,返回的值都不會改變,任然是以前保存的值),因此函數返回值是在finally執行前肯定的;
4、finally中最好不要包含return,不然程序會提早退出,返回值不是try或catch中保存的返回值。
1九、你是如何理解one to many和many to one?
好比,一個班級裏面有多個學生,能夠映射爲學生對班級的多對一,或者班級對學生的一對多。若是你常常經過班級來查詢某個班裏有哪些學生,顯然一對多比較方便;
可是若是你常常會從學生來查找他屬於哪一個班的,以及這個班的信息,顯然使用同窗對班級的多對一較方便。
若是兩邊的信息可能都常常用,那麼就使用雙向的映射
其它公司面試:
一、 string stringbuffer stringbuild 的區別。
二、 String:長度給定不可變,當多個字符串聯合時要先轉爲StringBuffer,再聯合, 速度慢。 StringBuffer:長度可變,能夠將多個字符串值直接聯合,效率高
三、 StringBuilder 字符串變量(非線程安全)
二、servlet 的生命週期。
1.初始化階段,調用init()方法。
2.響應客戶端請求階段,調用service()方法。
3.銷燬階段,調用desttory()方法。
三、spring的原理,在項目中怎麼用的?簡述IOC和AOP的原理?
一、下降了組件之間的耦合性,實現了軟件各層之間的解耦。
二、可使用容易提供的衆多服務,如事務管理,消息服務,日誌記錄等。
三、容器提供了AOP技術,利用它很容易實現如權限攔截、運行期監控等功能。Spring中AOP技術是設計模式中的動態代理模式。只需實現jdk提供的 動態代理接口InvocationHandler,全部被代理對象的方法都由InvocationHandler接管實際的處理任務。面向切面編程中還要 理解切入點、切面、通知、織入等概念。
Spring中IOC則利用了Java強大的反射機制來實現。所謂依賴注入即組件之間的依賴關係由容器在運行期決定。其中依賴注入的方法有兩種,經過構造函數注入,經過set方法進行注入。
四、多線程同步,併發怎麼處理?
synchronized關鍵字主要解決多線程共享數據同步問題。
ThreadLocal使用場合主要解決多線程中數據因併發產生不一致問題。
ThreadLocal和Synchonized都用於解決多線程併發訪問。
四、 cache(cache 和MemCache)的區別?
cache類:裏面都是靜態方法,提供基於key,value的方法進行cache的添加,修改,訪問,進行cache過時後調用callback方法。
MemCache的工做流程以下:先檢查客戶端的請求數據是否在 memcached中,若有,直接把請求數據返回,再也不對數據庫進行任何操做;若是請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取 的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,須要程序明確實現);每次更新數據庫的同時更新 memcached中的數據,保證一致性;當分配給memcached內存空間用完以後,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被替換,而後再替換掉最近未使用的數據。[2]
Memcache是一個高性能的分佈式的內存對象緩存系統,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,從而大大提升讀取速度。
六、jvm是怎麼執行class的,原理,機制是什麼?
Java源文件通過Java編譯器編譯成字節碼文件 被類裝載器裝載到jvm中
被jvm解釋給操做系統 最後操做系統來執行
1.先自我介紹一下。
2.問struts原理
springMVC的做用:1控制請求轉發 2獲取用戶提交表單的數據 3調用後面的業務層將表單的數據轉發到視圖上進行展現
3.hibernate 的配置,緩存,(感受問得最大的是緩存技術)緩存技術 我沒答好。
Hibernate緩存包括兩大類:Hibernate一級緩存和Hibernate二級緩存。
Hibernate一級緩存又稱爲「Session的緩存」。Session內置不能被卸載,Session的緩存是事務範圍的緩存(Session對象的生命週期一般對應一個數據庫事務或者一個應用事務)。一級緩存中,持久化類的每一個實例都具備惟一的OID。
2.Hibernate二級緩存又稱爲「SessionFactory的緩存」。
因爲SessionFactory對象的生命週期和應用程序的整個過程對應,所以Hibernate二級緩存是進程範圍或者集羣範圍的緩存,有可能出現併發問題,所以須要採用適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。第二級緩存是可選的,是一個可配置的插件,默認下SessionFactory不會啓用這個插件。Hibernate提供了org.hibernate.cache.CacheProvider接口,它充當緩存插件與Hibernate之間的適配器。
4.spring的配置xml的屬性。
依賴注入之經過xml配置文件給對象的屬性注入值
一般咱們建立一個類,讓Spring容器管理,經過控制反轉給這個類生成對象Person
5.多線程。大數據怎麼處理。
6.前臺的js,jquery 知道多少(今天都是被問到這個了,我不太深刻了解)
7.weblogic ,和Tomcat的優化,配置你知道怎麼配置嗎?緩存怎麼配置?
8.oracle怎樣處理大數據。用過mysq和sqlservice嗎?
9.springmvc的原理?mybaitais的原理?
MyBatis應用程序根據XML配置文件建立SqlSessionFactory,SqlSessionFactory在根據配置,配置來源於兩個地 方,一處是配置文件,一處是Java代碼的註解,獲取一個SqlSession。SqlSession包含了執行sql所須要的全部方法,能夠經過 SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查和事務提交等,用完以後關閉SqlSession
10.前臺頁面的展現有沒有作過?
作過 jsp頁面
11.一個框架在2到3天可否熟練使用?
12.工資多麼(這個答得不是很好)
好像還有,忘記了。
一、 多線程有幾種實現方式?
兩種 1繼承Thread 類 並實現run()方法
2實現runable接口 進而實現run()方法
二、 HashTable和HashMap的異同?
最大的不一樣是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步,而HashMap 就必須爲之提供外同步
HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上可能高於Hashtable。
三、 項目中用到了哪些技術?
Js springMVC jquery easyUI
四、寫個單例模式?抽象工廠模式?
五、用過內部類?有什麼好處 爲何須要內部類?
1一個內部類對象能夠訪問建立它的外部類對象的內容,甚至包括私有變量
真正的緣由,java中的內部類和接口加在一塊兒,能夠很好的實現多繼承的效果
可使某些編碼根簡潔。 隱藏你不想讓別人知道的操做
6、抽象類和接口的異同?
1 抽象類中能夠有抽象的方法也可有具體的方法
而接口中的方法都是抽象方法
2 接口能夠多實現 而方法只能繼承一個
五、 webservice有用過嗎?
有 Web Service是面向服務架構的一種實現形式,它可以以一種平臺無關的方式在不一樣系統之間進行交互。
六、 面向對象的特性?詳細說明?
繼承
封裝
多態
10什麼是反射?什麼地方用反射?
對於任何一個類,都能知道該類中的全部屬性和方法;對於任何一個對象,都可以調用他的任意一個方法和屬性。
hibernate配置 反射pojo
Spring 反射獲得全部controller與method
十、寫sql語句,把重複的人名和總素統計出來?
Select name, count(name)from emp where count(name)>1;
十一、介紹集合框架
Collection set list map
十二、ajax原理?優缺點?
Ajax的工做原理至關於在用戶和服務器之間加了—箇中間層(AJAX引擎),使用戶操做與服務器響應異步化。並非全部的用戶請求都提交給服務器,像— 些數據驗證和數據處理等都交給Ajax引擎本身來作, 只有肯定須要從服務器讀取新數據時再由Ajax引擎代爲向服務器提交請求。
Ajax其核心有JavaScript、XMLHTTPRequest、DOM對象組成,經過XmlHttpRequest對象來向服務器發異步請求,從服務器得到數據,而後用JavaScript來操做DOM而更新頁面。這其中最關鍵的一步就是從服務器得到請求數據
1三、多態中,父類和子類方法如何相互調用?
先檢查父類中是否有該方法 若是沒有的話編譯會出錯 若是有 子類沒有重寫 調用父類對應的該方法 子類重寫了該方法 在調用子類對應的方法
1四、Servlet的生命週期?如何實現的?
1.初始化階段,調用init()方法。
2.響應客戶端請求階段,調用service()方法。
3.銷燬階段,調用desttory()方法。
1五、權限管理中,怎樣過濾顯示字段?
如今咱們項目使用jackson進行json操做
項目都是用戶登陸就直接跳轉到其擁有權限的頁面,或者顯示可訪問頁面的連接。使用這種方式來幼稚地控制訪問權限
jsp中權限的控制是經過Filter過濾器來實現的