Java-最近面試筆試總結

1. WebLogicTomcat的區別?java

相同點:WebLogicTomcat都是基於java的基礎架構來知足實時處理需求.mysql

不一樣的版本與jdk版本兼容和有所不一樣;由於都是要和前臺交互,因此他們都基於sun公司的servlet來實現的。linux

不一樣點:WebLogicj2ee的應用服務器(application server),包括ejb ,jsp,servlet,jms等等web

Tomcat只能算Web Container,是官方指定的JSP&Servlet容器面試

  ②  WebLogic Server既實現了網頁羣集,也實現了EJB組件 羣集,並且不須要任何專門的硬件或操做系統支持。ajax

   網頁羣集能夠實現透明的複製、負載平衡以及表示內容容錯,在擴展性方面WebLogic遠遠超越了Tomcat算法

  ③ Tomcat開源免費,WebLogic不開源難免費spring

 

2. GB2312GBKGB18030 這幾種字符集的主要區別是什麼?sql

GB2312數據庫

GB 2312 GB 2312-80 是簡體中文字符集,共收錄 6763個漢字,對於人名、古漢語等方面出現的罕用字,

GB 2312不能處理,這致使了後來GBKGB 18030漢字字符集的出現。

GBK:即漢字內碼擴展規範

GBK共收入21886個漢字和圖形符號,GBK 採用雙字節表示。

GB18030

是如今使用的最新內碼子集,共收錄漢字70244個。

 

3. 說說你知道的幾種數據庫,以及它們之間的區別。

MySQL:體積小、速度快、免費開源;支持多種操做系統。

MySQL最大的缺點是其安全系統,主要是複雜而不標準;沒有一種存儲過程(Stored Procedure)語言

Oracle:能在全部主流操做系統上運行(包括 windows);得到最高認證級別的ISO標準認證

對硬件的要求很高;價格比較昂貴;管理維護麻煩一些;操做比較複雜,須要技術含量較高;

SQL Server: 易用性、適合分佈式組織的可伸縮性;與許多其餘服務器軟件緊密關聯的集成性

SQL Server只能在Windows上運行;沒有得到任何安全證書

 

4. 前臺與後臺的數據交換方式以及優缺點。

 

5. 小球落地再次彈起一半的問題:第n次跳多高,總共通過多少米。

 

6. 二叉搜索樹的遍歷以及算法實現;二叉樹的層數和節點問題。

 

7. 什麼是視圖,視圖的做用?

視圖是一種虛表,視圖創建在已有表的基礎上。

做用:控制數據訪問;簡化查詢;避免重複訪問相同的數據

 

1、視圖可以簡化用戶的操做

2、視圖使用戶能以多鍾角度看待同一數據

3、視圖對重構數據庫提供了必定程度的邏輯獨立性

4、視圖可以對機密數據提供安全保護

5、適當的利用視圖能夠更清晰的表達查詢,

視圖的優勢:
提升數據安全性,能夠不讓用戶看到表中的某個字段.好比password,你只給他們執行視圖的權限,不給執行表的權限,他們就沒法查看所有數據.
還有能夠創建一個視圖,內容包括兩個表,更新的時候只須要指定ID,而不用管它來自哪一個表,對應表中的數據就會自動更新.

8. 對事務的理解,事務的特性。

事務是爲了保證對同一數據表操做的一致性。   
 即多條語句放在事務中執行的時候,要麼一塊兒成功,要麼全不成功
具有 4大特性: 原子性  一致性 隔離性 和持久性
A是原子性(atomic):事務中包含的各項操做必須所有成功執行或者所有不執行。任何一項操做失敗,將致使整個事務失敗,其餘已經執行的任務所做的數據操做都將被撤銷,只有全部的操做所有成功,整個事務纔算是成功完成。     
B是一致性(consistent):保證了當事務結束後,系統狀態是一致的。那麼什麼是一致的系統狀態?例如,若是銀行始終遵循着"銀行帳號必須保持正態平衡"的原則,那麼銀行系統的狀態就是一致的。上面的轉帳例子中,在取錢的過程當中,帳戶會出現負態平衡,在事務結束以後,系統又回到一致的狀態。這樣,系統的狀態對於客戶來講,始終是一致的。     
c是隔離性(isolated):使得併發執行的事務,彼此沒法看到對方的中間狀態。保證了併發執行的事務順序執行,而不會致使系統狀態不一致。     
D是持久性(durable):保證了事務完成後所做的改動都會被持久化,即便是發生災難性的失敗。可恢復性資源保存了一份事務日誌,若是資源發生故障,能夠經過日誌來將數據重建起來

 

9. 請說出三種數據結構和查詢算法,並各挑出兩種說明其優缺點。

 

10. SQL多表查詢問題(手寫即選擇給出的SQL的查詢結果)

 

11. 編程題

① 給出一種定義的語言,求1--1000(包括1000)之間偶數之和----考察快速學習的能力

② 給出三邊,如何判斷是等腰/等邊/通常的三角形?

③ 編寫一個方法,傳入一個1-100的數組,這個數組存儲班上100我的的成績,對成績進行排序,並返回數組。

④ 給出n,打印出一個給定的圖形

12 .Java8新特性

 

昨天技術面我只記得這麼多了
1、數據庫中是怎麼獲取時間

select now();//輸出當前數據庫時間
select sysdate();//輸出系統時間
select curdate();//輸出 2011-11-08
  select curtime();//輸出17:18:49

2springmvc有哪些註解

1. @Controller

2. @RequestMapping

3. @PathVariable

4. @RequestParam

5. @RequestBody

6. @ResponseBody


3spring的工做原理,springmvcspring的關係

spring 是是一個開源框架,是爲了解決企業應用程序開發,功能以下
◆目的:解決企業應用開發的複雜性
◆功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能
◆範圍:任何Java應用
簡單來講,Spring是一個輕量級的控制反轉IoC)和麪向切面(AOP)的容器框架。
◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架能夠在一個大小隻有1MB多的JAR文件裏發佈。而且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。
控制反轉——Spring經過一種稱做控制反轉IoC)的技術促進了鬆耦合。當應用了IoC,一個對象依賴的其它對象會經過被動的方式傳遞進來,而不是這個對象本身建立或者查找依賴對象。你能夠認爲IoCJNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
◆面向切面——Spring提供了面向切面編程的豐富支持,容許經過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該作的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支持。
◆容器——Spring包含並管理應用對象的配置和生命週期,在這個意義上它是一種容器,你能夠配置你的每一個bean如何被建立——基於一個可配置原型(prototype),你的bean能夠建立一個單獨的實例或者每次須要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不該該被混同於傳統的重量級的EJB容器,它們常常是龐大與笨重的,難以使用。
◆框架——Spring能夠將簡單的組件配置、組合成爲複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件裏。Spring也提供了不少基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。
全部Spring的這些特徵使你可以編寫更乾淨、更可管理、而且更易於測試的代碼。它們也爲Spring中的各類模塊提供了基礎支持。

 Spring的兩大核心AOPIOC,能夠單獨用於任何應用,包括與StrutsMVC框架HibernateORM框架的集成,目前不少公司所謂的輕量級開發就是用 Spring + Struts(2)+Hibernate

  Spring MVC就是一個MVC框架,我的以爲Spring MVC annotation式的開發比Struts2方便,能夠直接代替上面的Struts(固然Struts的作爲一個很是成熟的MVC,功能上感受仍是比Spring強一點,不過Spring MVC已經足夠用了)。固然spring mvc的執行效率比struts高,是由於struts的值棧影響效率
  spring mvc相似於struts的一個MVC開框架,其實都是屬於springspring mvc須要有spring的架包做爲支撐才能跑起來
  若是有人問你什麼事控制反轉(spring的核心面試常問道):你就回答,原本程序是由咱們new 出來的嘛,後來交給程序控制進行new出來了嘛,這就是控制反轉嘛
5forforeach的區別

1.若是隻是遍歷集合或者數組,用foreach好些,快些。
2.若是對集合中的值進行修改,就要用for循環了。其實foreach的內部原理其實也是Iterator,但它不能像Iterator同樣能夠人爲的控制,並且也不能調用iterator.remove();更不能使用下標來訪問每一個元素,因此不能用於增長,刪除等複雜的操做。舉個例子:
for(String aid:list){
   if(aid.equals("aa")){
    list.remove(aid);  //這行會報錯,不能修改list的長度
   }
  }
因此foreach語句是for語句的特殊簡化版本,可是foreach語句並不能徹底取代for語句

6webService的理解

webservice 只就是POST類型的 HTTP請求;以往的HTTP請求都是 瀏覽器從FORM 裏發出的
用於提交 表單,好比 瀏覽器提交 username=tom&password="123456" 給服務器,服務器驗證完 用戶名和密碼正確後 再返回字符串 "success".
後來 發現 能夠把提交的內容作的更復雜, 由於服務器能夠接受更多東西以計算。
好比:提交給服務器 <username>tom</username>
    <password>123456</password>
    <bothdata>19800305</bothdate>
    ........ 還有很長就不寫了
  而後服務器返回<result>success</result>

可是這種新的提交方法 再叫做POST表單請求就不合適了,起個新的名子吧,就叫WEBSERVICE,這種提交的格式就叫作 XML 。由於這東西 比 原來那個

username=tom&password="123456" 更容易被人讀懂,並且能夠存儲表達更多東西。

至於於那個WDSL 就是一種格式規範,他就像是小學語文規定每一個新段落開頭要空兩個字沒什麼區別它規定了 提交WEBSERVICE 時 應該

開頭寫什麼標示,結尾寫什麼標示

 


7EasyUI的下拉框是傳的是什麼數據
8ajax的原理與怎麼判斷是同步仍是異步

異步
9、同步與異步

Java中交互方式分爲同步和異步兩種:

同步交互:指發送一個請求,須要等待返回,而後纔可以發送下一個請求,有個等待過程;

異步交互:指發送一個請求,不須要等待返回,隨時能夠再發送下一個請求,即不須要等待。 
區別:一個須要等待,一個不須要等待,在部分狀況下,咱們的項目開發中都會優先選擇不須要等待的異步交互方式。

哪些狀況建議使用同步交互呢?好比銀行的轉帳系統,對數據庫的保存操做等等,都會使用同步交互操做,其他狀況都優先使用異步交互。
10、數據的持久化

數據持久化就是將內存中的數據模型轉換爲存儲模型,以及將存儲模型轉換爲內存中的數據模型的統稱. 數據模型能夠是任何數據結構或對象模型,存儲模型能夠是關係模型、XML、二進制流等。

使用數據持久化有如下好處:

1、程序代碼重用性強,即便更換數據庫,只須要更改配置文件,沒必要重寫程序代碼。

2、業務邏輯代碼可讀性強,在代碼中不會有大量的SQL語言,提升程序的可讀性。

3、持久化技術能夠自動優化,以減小對數據庫的訪問量,提升程序運行效率。

數據持久化對象的基本操做有:保存、更新、刪除、查詢等。


11、存儲過程的理解

存儲過程是一組預先編譯好的sql代碼,因爲是已經編譯好的代碼,因此執行的時候沒必要再次進行編譯,從而提升了程序的運行效率

十二、數據結構和算法瞭解多少

 

13linux環境下,你怎麼搭建Web環境

 安裝JDK

先安裝JDK1.6

敲入如下命令

cd /home/liuyan/javaee

tar –zxvf jdk-6u22-linux-i586-rpm.bin

便可解壓縮JDK包。

解壓縮成功後還不算完,咱們還要手工設定一下環境變量!

VI編輯器編輯一下環境變量文件

vi /etc/profile

在文件的末尾加上如下幾句話

JAVA_HOME=/home/liuyan/javaee/ jdk-6u22-linux-i586

PATH=$PATH: /home/liuyan/javaee/ jdk-6u22-linux-i586/bin

CLASSPATH=.:/home/liuyan/javaee/ jdk-6u22-linux-i586/jre/lib/rt.jar

export JAVA_HOME PATH CLASSPATH

保存退出

注意:其中jdk-6u22-linux-i586是解壓縮jdk後的包名。

按此配置,從新登陸linux後,jdk命令即生效。

在控制檯輸入

java –version

便可驗證是否安裝成功

       安裝Tomcat6

運行一下命令

cd /home/liuyan/javaee

tar –zxvf apache-tomcat-6.0.29.tar.gz

直接解壓縮tomcat就行,tomcat在這3個文件的安裝中算是最簡單的。

解壓縮後的文件夾應該是apache-tomcat-6.0.29

    安裝MySql數據庫

運行一下命令

tar –zxvf mysql-5.2.0-falcon-alpha-linux-i686-glibc23.tar.gz

先將MySql的包解壓縮,由於安裝rpm的文件會涉及到不少依賴包,因此筆者這裏偷懶了,用了一個linux解壓縮文件。

解壓縮完成後,先修改一下解壓縮後的包名

cd /home/liuyan/javaee/

mv mysql-5.2.0-falcon-alpha-linux-i686-glibc23 mysql5

將解壓縮後的文件夾重命名爲mysql5

MySql自帶的配置文件拷貝到系統環境變量中,運行如下命令

cp /home/liuyan/javaee/mysql5/support-files/my-medium.cnf /etc/my.cnf

 

下面咱們修改一下Mysql的編碼格式

vi /etc/my.cnf

修改內容以下

添加
********************************
* [client]                     *
* default-character-set=utf8   *
********************************

修改數據庫編碼方式爲UTF8
sudo vi /etc/my.cnf
添加
********************************
* [mysqld]                     *
* default-character-set=utf8   *
********************************

這樣mysql編碼都爲utf-8

下面咱們運行如下命令初始化mysql的數據

cd /home/liuyan/javaee/mysql5

scripts/mysql_install_db –user=root

初始化數據,設定mysql的使用用戶爲root,注意這個root用戶和linuxroot用戶是兩碼事。

數據安裝成功後運行如下命令便可之後臺進程的方式啓動mysql服務

cd /home/liuyan/javaee/mysql5

bin/mysqld_safe –user=root

輸入如下命令

netstat –anp | more

看看是否有3306的端口被佔用了?

固然,咱們也能夠修改/etc/profile文件增長mysql的環境變量,方法和jdk差很少。

PATH=$PATH: /home/liuyan/javaee/mysql5/bin

    千萬別忘記

要想運行你的Java EE項目,還差一點點,將mysqljar包拷貝到jdk/jre/lib/ext下面,這樣jre才能找獲得mysql數據庫的驅動程序。

運行如下命令

cd /home/liuyan/javaee/apache-tomcat-6.0.29/bin

./startup.sh

便可運行您的項目了。

 

UML是什麼,你用它來作什麼?

統一建模語言

工程中各個模塊、類之間的將架構圖,能夠清晰地分析出各個模塊間的關係!

15、物聯網是幹什麼的?

相關文章
相關標籤/搜索