天天看點

java面試問題總結

1.git和svn的差別?

1. GIT是分布式的,SVN不是   2.GIT把内容按中繼資料方式存儲,而SVN是按檔案

3.GIT分支和SVN的分支不同  4.GIT沒有一個全局的版本号,而SVN有  5.GIT的内容 完整性要由于SVN

2.shiro架構的流程,哪幾部分組成?

    Subject--主體,是與程式進行互動的對象,可以是人也可以是服務或其他程式,通常理 解使用者。所有的Subject執行個體都必須綁定到一個SecurityManager上,我們與 SecurityManager互動,運作是shiro會自動轉化為與SecurityManager互動的特定的 subject的互動。SecurityManager--SecurityManager是shiro的核心,初始化時協調各個 子產品運作。然而,一旦SecurityManager協調完畢,SecurityManager會被單獨留下,且 我們隻需要去操作Subject即可,無需操作SecurityManager.但是需要了解的是當我們與 一個Subject進行互動時,實質上是SecurityManager在處理Subject的安全操作。 Realms--Realms是shiro中作為程式和安全資料之間的“橋梁”或連接配接器。它用于擷取 安全資料來判斷subject是否能夠登陸,subject擁有什麼權限。有點類似與DAO。在配 置realms時,需要至少一個realm.而且shiro提供了一些常用的Realms來連接配接資料源, 如LDAP資料源的JndiLdapRealm,JDBC資料源JdbcRealm,ini檔案資料源的 iniRealm,Properties檔案資料源的PropertiesRealm,等等,我們也可以插入自已的Realm 實作來代表自定義的資料源。向其他元件一樣,Realms也是有SecurityManager控制     

部分有:身份認證.授權.會話管理.加密  

Subject:主體     securityManager:安全管理器  authenticator:認證器  authorizer:授權器    sessionManager:web應用中一般使用web容器對session進行管理,shiro也提供一套session管理的方式   sessionDao:通過SessionDao管理session資料,針對個性化的session資料存儲需要使用sessionDao     cache Manager:緩存管理器  realm:域.資料源

3.Solr cloud的作用

   SolrCloud是Slor的基于Zookeeper一種部署方式。主要功能有:集中式的配置資訊.自動 容錯.近實時搜尋.查詢時自動負載均衡.自動分發的索引和索引分片.事務日志.索引存儲 在HDFS上.通過MR批量建立索引.強大的RESTful API.優秀的管理界面

4.伺服器崩潰怎麼解決的

  1.評估  2.不要過多嘗試修複  3.及時與供應商/托管商聯系 4.暫時取代 5.使用您的備份資料. 6.測試

5.怎麼解決緩存穿透

    1.如果查詢資料庫也為空,直接設定一個預設值存放到緩存,這樣第二次到緩沖中擷取就有值了,而不會繼續通路資料庫,這種辦法最簡單粗暴2.根據緩存資料Key的規則。3.采用布隆過濾器。

6.圖檔上傳哪個伺服器存儲

   圖檔伺服器存儲伺服器FastDFS

7.類加載機制是什麼?

JVM的類加載是通過ClassLoader及其子類來完成的,

1. bootstrap classloader 負責加載$JAVA_HOME中jre/lib/rt.jar裡所有的class,由C++實作,不是ClassLoader子類

2. Extension  ClassLoader 負責加載java平台中擴充功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目錄下的jar包

3. App ClassLoader 負責記載classpath 中指定的jar包及目錄中class

4. Custom ClassLoader 屬于應用程式根據自身需要自定義的ClassLoader,如tomcat.jboss都會根據j2ee規範自行實作ClassLoader

加載過程中會先檢查類是否被已加載,檢查順序是自底向上,從CustomClassLoader到 BootStrap ClassLoader逐層檢查,隻要某個classloader已加載就視為已加載此類,保證 此類隻所有ClassLoader加載一次。而加載的順序是自頂向下,也就是由上層來逐層嘗 試加載此類。

8. synchronized關鍵字應用場景,static關鍵字的含義?

使用synchronized(object){代碼塊}能對代碼進行加鎖,不允許其他線程通路。

Static關鍵字可以應用于内部類(在另一個類中定義的類).方法或字段(類的成員變量).

Static關鍵字意味着應用它的實體在聲明該實體的類的任何特定執行個體外部可用,Static(内部)類可以被其他類執行個體化和引用,Static字段(類的成員變量)在類的所有執行個體中隻存在一次

9.代碼送出方式,怎樣不産生沖突,

     用svn送出,因為用的是maven多子產品建工程,是以送出不會産生沖突

10.公司的開發流程!

按照需求進行開發

需要經過需求擷取.需求分析.系統設計.詳細設計.子產品開發.子產品測試.子產品整合.上線測試.使用者回報等等。

11.公司主要的業務,公司人員配置

三名背景開發人員   兩名用戶端開發人員   一名測試人員

12.怎麼跟前端互動的,怎麼調用接口的,

用ajax異步請求互動,或http請求  接口action調用

13.有沒有參與表的設計,參與需求分析和流程開發

       有,有

14.有沒有寫過前端代碼!Ajaxs同步和異步的差別!

      有過,async預設的設定值為true,這種情況為異步方式,就是說當ajax發送請求後,在等待server端傳回的這個過程中,前台會繼續 執行ajax塊後面的腳本,直到server端傳回正确的結果才會去執行success,也就是說這時候執行的是兩個線程。

      當把async設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊送出請求後,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢

15.建立線程的方式有哪幾種!

有三種方式  繼承Thread類  實作Runable接口  實作接口callable  future建立線程類

16.Public protected default  private四種修飾符之間的差別

public (對任何人都是可用的)  protected(繼承的類可以通路以及和private一樣的權限)

default(包通路權限,即在整個包内均可被通路)  private(除類型建立者和類型的内部方法之外的任何人都不能通路的元素)

17.有一批100兆的檔案,怎麼快速插入資料庫,提高效率

利用多線程的方法

18.有一大批接口,需要對資料進行處理,采用什麼方式增加功能

利用aop代理前通知實作

19.問String和new String建立了幾個對象

String 是一個對象   new  String 是兩個對象

20.Java的三種特性是?

繼承  封裝   多态

21.接口和類的差別?

接口是對于功能的抽取   類是一種事物的統稱

22.final關鍵字應用在哪裡?

應用在類    成員屬性   方法上

23.反射出對象和newInstance的差別?

newInstance 是建立了一個新的對象,反射隻是獲得了一個已有的對象

24.繼承之間的關系,接口的差別,自定義注解

Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的資料或新的功能,也可以用父類的功能,但不能選擇性地繼承父類,

接口是抽象方法的集合。如果一個類實作了某個接口,那麼它就繼承了這個接口的抽象方法,接口隻是一種形式,接口自身不能做任何事情。

25.Sql語句的執行順序

   Select  a,b,count(sum(c))over() from t where t.d=1 start  with e is not null connect by  prior f=g group by a,b having  sum(c)>100  order by 3;

這個SQL包含:1.select子句 2.group by 子句  3.分析函數 4.from子句  5.where子句 6.start with...connect by 子句  7having子句 8.order  by子句

對于select子句,從執行計劃看是在最後執行的,我把它了解為傳回資料給使用者,而不是讀取資料,讀取資料是在from這個步驟執行的,是以我認為的順序是:4->6>5->2>7->3>8->1

26.Git的常用指令,項目中遇到的先進的技術點

   檢視.添加.送出.删除.找回.重置修改檔案

27.怎麼判斷js中值和類型是否一緻?

用===判斷

28.Css的盒子模型有哪些?

css盒子模型 又稱為框模型(BoxModel),包含了元素内容(content).内邊距(padding).邊框(border).外邊距(margin)幾個要素。

29.Js的标簽周遊,js象裡屬性的周遊 怎麼了解js的閉包

30.資料庫中哪些是key-value型資料庫

1. Aerospike社群版 2.LeveIDB  3.Scalaris  4.Project Voldemort  5.HyperDex  6.Berkeley DB

7. Apache Accumulo  8.Redis  9.Apache Cassandra

31.單利模式代碼

public  cLass singleton{

  private  static  Singleton  singleton =null;

  private  Singleton(){};

  public  static Singleton getSingleton(){

      If(singleton ==null){

       singleton=new Singleton();

return  singleton;

}

}

32.冒泡算法代碼

public  class  BubbleSorted(){

Public   BubbleSorted(){

Int  a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,54,56,17,18,23,34,15,35,25,53,51};

Int  temp=0;

for(int  i=0;j<a.length-1;i++){

  for(int j=0; j<a.length-1-i;j++){

   if(a[j]>a[j+1]){

    temp=a[j];

        a[j]=a[j+1];

        a[j+1]=temp;

}

}

}

for(int i=0;i<a.length;i++){

System.out.println(a[i]);

}

}

33.Map集合使用疊代器周遊代碼?

public static   void  main(String [] args){

   Map<String,String> map=new  HashMap<String,String>();

map.put(“1”,”value1”);

map.put(“2”,”value2”);

map.put(“3”,”value3”);

System.out.println(“通過Map.entrySet使用iterator周遊key和value:”);

  Iterator<Map.Entry<String,String>> it=map.entrySet().iterator();

while(it.hasNext()){

  Map.Entry<String,String> entry=it.next();

System.out.println(“key=”+entry.getKey()+”and  value=”+entry.getValue());

}

34.Linux中常見的操作指令

ls 顯示檔案或目錄  -l 列出檔案詳細資訊  -a  列出目前目錄下所有檔案及目錄,包括隐藏的a(all)   mkdir  建立目錄  -p 建立目錄,若無父目錄,則建立p(parent)  cd  切換目錄

touch  建立空檔案    echo 建立帶有内容的檔案   cat  檢視檔案内容  cp  拷貝  mv  移動或重命名 rm 删除檔案  -r 遞歸删除,可删除子目錄及檔案  -f 強制删除  grep  在文本檔案中查找某個字元串   rmdir  删除空目錄  pwd  顯示目前目錄  head.tail  顯示檔案頭.尾内容

35.Vi中删除光标的快捷鍵

36.常用的浏覽器有哪些,使用過浏覽器的核心是什麼

37.重載跟重寫的差別

   Override(重寫)

1. 方法名.參數.傳回值相同。

2. 子類方法不能縮小父類方法的通路權限。

3. 子類方法不能抛出比父類方法更多的異常(但子類方法可以不抛出異常)。

4. 存在與父類和子類之間。

5. 方法被定義為final不能被重寫

  Overload(重載)

1. 參數類型.個數.順序至少有一個不相同。

2. 不能重載隻有傳回值不同的方法名。

3. 存在于父類和子類.同類中

38.重載能不能改變傳回值

 可以改變傳回值

39.A方法中有事務B方法中有事務如果A調用B方法   A中有幾個事務

這個不一定,a中本身有一個事務,調用b方法,可以開啟一個新的事務,同時挂起a的事務,也可以直接用a的事務

40.你對Spring 事務的了解

   配置檔案開啟注解驅動,在相關的類和方法上通過注解@Transactional辨別。

   spring在啟動的時候會去解析生成相關的bean,這時候會檢視擁有相關注解的類和方法,并且為這些類和方法生成代理,并根據@Transaction的相關參數進行相關配置注入,這樣就在代理中為我們把相關的事務處理掉了(開啟正常送出事務,異常復原事務)。

41.String  abc   跟String a+b+c  用==号比較傳回的市false還是true

42.New  String(abc)  跟 new String(a+b+c)  用==号比較傳回的是false還是true

43.如果第一次操作成功,第二次操作失敗,他是操作失敗還是成功了

44.怎麼建立js數組

    var  arr1=new Array();   var a =new Array(5);   var a =new Array([“b”,2,”a”,4,]);

45.js怎麼建立對象

1.使用内置對象

2.使用JSON符号

3.自定義對象構造

46.為什麼要配置環境變量

保證javac能在任意目錄下執行

訂單管理:使用者在點選商品,加入到購物車,在未登入之前通過cookie通過用戶端存儲商品,如果換一台電腦就檢視不到,當使用者登入之後,把資料存入到session中,為了解決高并發問題,利用redis資料庫把session中的商品資訊存入到redis伺服器上資料庫中,進入送出頁面後,填寫商品收貨人資訊,電話号碼,收貨位址,是否列印發票,是否優惠打折選項,填寫備注資訊等,然後把填寫的内容資訊插入到資料庫中。送出然後轉到支付頁面!

注冊/登入:使用者可以使用手機号注冊系統并可以使用動态驗證碼和靜态密碼登入;

個人資訊維護:使用者可以修改名稱.頭像.機關.密碼等個人資訊;

查詢資訊:可以查詢資訊釋出管理子產品釋出的是釋出狀态的資訊;

我要咨詢:注冊使用者可以在移動端通過填寫咨詢資訊,然後送出到系統的投訴受理管理中由背景管理者進行處理;如果有處理結果則使用者可以檢視回複結果;

我要投訴:注冊使用者可以在移動端通過填寫投訴内容,然後送出到系統的投訴受理管理中由背景管理者進行處理;如果有處理結果則使用者可以檢視回複結果

我要預約:注冊使用者可以在移動端通過填寫預約事項.預約内容.地點.時間,然後送出預約到系統的服務預約管理中由背景對應事項的處理人員進行處理,如果由處理結果則使用者可以檢視回複結果;

易告知:可以檢視由系統定時發送的催辦和催繳稅的資訊。

調查問卷:可以檢視由系統推送的調查問卷和自己填寫過的調查問卷内容。