日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java初中级面试题大全

發布時間:2024/1/18 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java初中级面试题大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java初中級面試題
一.請說出作用域 public, private, protected,以及不寫時的區別
回答:這四個作用域的可見范圍如下表所示。
說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示 friendly。
作用域 當前類 同一包( package) 子孫類 其他包( package)
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
二.接口和抽象類
接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認為public abstract類型,接口中的成員變量類型默認為public static final (這里需要說一點,既然一個變量被final修飾了,那么這個變量就是一個常量!!!變量必須初始化成常量!!!)
下面比較一下兩者的語法區別:
1.抽象類可以有構造方法,接口中不能有構造方法。
2.抽象類中可以有普通成員變量,接口中沒有普通成員變量!!!(注意重點在 普通 即 非靜態 和 變量!!!)
3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
4. 抽象類中的抽象方法的訪問類型可以是public,protected和(默認類型,雖然eclipse下不報錯,但應該也不行),但接口中的抽象方法只能是public類型的,并且默認即為public abstract類型。
三.String、StringBuffer與StringBuilder的區別
String 字符串常量
StringBuffer 字符串變量(線程安全)
StringBuilder 字符串變量(非線程安全)
四.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
五.多線程部分
1.什么是多線程?
在一個應用程序中,同時,有多個不同的執行路徑。
2.說一下多線程的好處?
提供程序效率。
3.線程和進程有什么區別?
線程是進程的一條執行路徑,而進程是線程的集合。
4.什么是線程同步、異步?
線程同步表示,當前線程執行完后下一個線程接著執行。
線程異步表示, 在一個應用程序中,同時,有多個不同的執行路徑。例如 javaweb ajax android handler
5.線程之間如何同步
線程之間同步使用 synchronized、wait 與 notify
6.什么是線程不安全?如何解決?(重點)
就是在多個線程共享同一個數據會受到其他線程的干擾。如何解決:使用線程同步技術, 用上鎖(synchronized)。 讓一個線程執行完了,在讓另一個線程執行。
7.如何創建一個線程?有幾種方法?
繼承thread類, 重寫run方法、實現Runnalbe接口,重新run方法 , 啟動一個線程用start();
8.是使用Runnalbe接口好?還是繼承Thread類好?
是實現Runnalbe接口好,因為實現的接口還可以繼續繼承。如果繼承了Thread類不能在繼承。
9.sleep()和 wait()有什么區別?
a、sleep是讓當前線程指定休眠時間,然后繼續工作 不釋放鎖
b、讓當前線程wait則是等待,直到有線程通知notify()喚醒他才會重新工作。釋放鎖
六.集合部分
1.List 和Set、Map 區別?
Java中的集合包括三大類,它們是Set、List和Map,它們都處于java.util包中,Set、List和Map都是接口,它們有各自的實現類。Set的實現類主要有HashSet和TreeSet,List的實現類主要有ArrayList,Map的實現類主要有HashMap和TreeMap。
  Set中的對象不按特定方式排序,并且沒有重復對象。但它的有些實現類能對集合中的對象按特定方式排序,例如TreeSet類,它可以按照默認排序,也可以通過實現java.util.Comparator接口來自定義排序方式。
  List中的對象按照索引位置排序,可以有重復對象,允許按照對象在集合中的索引位置檢索對象,如通過list.get(i)方式來獲得List集合中的元素。
  Map中的每一個元素包含一個鍵對象和值對象,它們成對出現。鍵對象不能重復,值對象可以重復。
2.List、Map、Set 三個接口,存取元素時,各有什么特點?
list:存儲: 有序的 可重復的
訪問:可以for循環,foreach循環,iterator迭代器 迭代。
set:存儲:無序的 不重復的
訪問:可以foreach循環,iterator迭代器 迭代
map:存儲:存儲的是一對一對的映射 ”key=value“,key值 是無序,不重復的。value值可重復
訪問:可以map中key值轉為為set存儲,然后迭代這個set,用map.get(key)獲取value
也可以 轉換為entry對象 用迭代器迭代
3.說出 ArrayList,Vector, LinkedList 的存儲性能和特性
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
4.hashmap和hashtable
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3.hashMap允許空鍵值,而hashTable不允許。

5.currenthashmap
七.說一下java反射機制以及常用場景。
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。
反射機制的應用,比如spring框架,逆向代碼 ,例如反編譯

八.框架部分
1.說說Spring?
Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
IOC(Inversion of Control)控制反轉: 將類的創建和依賴關系寫在spring的配置文件中,由配置文件在程序運行的時候動態注入,這樣就實現輕耦合。
AOP(Aspect Oriented Programming)面向切面編程: 將安全、事務、log等公共的服務對于程序邏輯相對獨立的功能抽取出來,利用spring的配置文件將這些功能在程序運行的時候動態的插進去,讓程序員更專注于業務邏輯的實現,實現了按照方面編程,提高了可維護性和復用性
2.說SpringIOC、SpringAOP原理?
SpringIOC ,控制反轉是一種編程思想,而依賴注入是控制反轉在spring在具體實現。利用了工廠模式 將對象交給容器管理,你只需要在spring配置文件總配置相應的bean,以及設置相關的屬性,讓spring容器來生成類的實例對象以及管理對象。在spring容器啟動的時候,spring會把你在配置文件中配置的bean都初始化好,然后在你需要調用的時候,就把它已經初始化好的那些bean分配給你需要調用這些bean的類(假設這個類名是A),分配的方法就是調用A的setter方法來注入,而不需要你在A里面new這些bean了。主要涉及到java的工廠涉及模式和反射機制。
SpringAOP 面向切面的編程,或AOP,是一種編程技術,允許程序模塊化橫向切割關注點,或橫切典型的責任劃分,如日志和事務管理。 SpringAop 就是用 Java的動態代理。主要用java的代理模式和反射機制。

3.Spring的底層實現機制是什么?
使用Demo4j(解析XML)+Java反射機制
Demo4j 其實就是解析XML。使用反射機制實例化bean。

4.Spring注入有那些方式?
Set注入
構造器注入
靜態工廠的方法注入
實例工廠的方法注入
Spring有那些注解?
@Autowired(按類型注入)
@Service(標示為注入為服務層)
@@Transactional 事物注解
@Controller(標識控制器bean id)
@RequestMapping(表示映射URL路徑)
簡述Spring的優缺點?
Spring 的優點??
1.降低了組件之間的耦合性 ,實現了軟件各層之間的解耦
2.可以使用容易提供的眾多服務,如事務管理,消息服務等
3.容器提供單例模式支持
4.容器提供了AOP技術,利用它很容易實現如權限攔截,運行期監控等功能
5.容器提供了眾多的輔助類,能加快應用的開發
6.spring對于主流的應用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring屬于低侵入式設計,代碼的污染極低
8.獨立于各種應用服務器
9.spring的DI機制降低了業務對象替換的復雜性
10.Spring的高度開放性,并不強制應用完全依賴于Spring,開發者可以自由選擇spring的部分或全部
缺點:
使用到了大量反射機制。反射機制非常占內存,
11.Springmvc簡單的執行流程

12.mybatis #{}和${}區別,那種可以防止sql注入。
13說一下事物以及spring事物的配置。
九.什么是單例?單例有那些寫法?
單例分類:懶漢式單例、餓漢式單例
單例模式有以下特點:
1、單例類只能有一個實例。
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
①懶漢式單例

  • //懶漢式單例類.在第一次調用的時候實例化自己
  • public class Singleton {
  • private Singleton() {}
  • private static Singleton single=null;
  • //靜態工廠方法
  • public static Singleton getInstance () {
  • if (single == null) {
  • single = new Singleton();
  • }
  • return single;
  • }
  • }
  • ②餓漢式單例
    13. //餓漢式單例類.在類初始化時,已經自行實例化
    14. public class Singleton1 {
    15. private Singleton1() {}
    16. private static final Singleton1 single = new Singleton1();
    17. //靜態工廠方法
    18. public static Singleton1 getInstance() {
    19. return single;
    20. }
    21. }
    懶漢式與餓漢式區別?
    從名字上來說,餓漢和懶漢,
    餓漢就是類一旦加載,就把單例初始化完成,保證getInstance的時候,單例是已經存在的了,
    而懶漢比較懶,只有當調用getInstance的時候,才回去初始化這個單例。
    另外從以下兩點再區分以下這兩種方式:

    1、線程安全:
    餓漢式天生就是線程安全的,可以直接用于多線程而不會出現問題,
    懶漢式本身是非線程安全的,為了實現線程安全有幾種寫法,分別是上面的1、2、3,這三種實現在資源加載和性能方面有些區別。
    2、資源加載和性能:
    餓漢式在類創建的同時就實例化一個靜態對象出來,不管之后會不會使用這個單例,都會占據一定的內存,但是相應的,在第一次調用時速度也會更快,因為其資源已經初始化完成,
    而懶漢式顧名思義,會延遲加載,在第一次使用該單例的時候才會實例化對象出來,第一次調用時要做初始化,如果要做的工作比較多,性能上會有些延遲,之后就和餓漢式一樣了。
    十.數據庫面試題
    1.基本sql 增刪改查,左右連接、內連接、order by 、group by
    2.索引。
    3.存儲過程。
    4.觸發器。
    5.鎖:共享鎖、排他鎖
    6.mysql引擎。
    十一.Js
    1.ajax的基本參數
    type: ‘GET’, // 這是請求的方式 可以是GET方式也可以是POST方式, 默認是GET 。
    url: ’ xxx’, // 這是請求的連接地址 一般情況下這個地址是后臺給前端的一個連接,直接寫就可以 。
    dataType: ‘json’, // 這是后臺返回的數據類型 一般情況下都是一個json數據, 前端遍歷一下就OK 。
    async: true, // 默認為true,默認為true時,所有請求均為異步請求,如果需要發送同步請求,需設置為false,
    data: {
    // 要傳遞的參數
    ‘xxx’ : ‘xxx’, },
    2.如何解決跨域問題
    Jsonp,缺點,只能get請求。
    以下簡單了解
    十二.Cookie和session區別
    cookie 和session 的區別:
    1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
    2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
    考慮到安全應當使用session。
    3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
    考慮到減輕服務器性能方面,應當使用COOKIE。
    4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
    5、所以個人建議:
    將登陸信息等重要信息存放為SESSION
    其他信息如果需要保留,可以放在COOKIE中

    十三.什么是分布式系統。
    十四.說一下單點登錄系統(sso)。

    總結

    以上是生活随笔為你收集整理的Java初中级面试题大全的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。