Java基礎面試題(簡單版):

1.java的8個基本數據類型?

????????整型: byte(占用1個字節) short(占用2個字節) int(占用4個字節) long(占用8個字節)

????????浮點型: float(占用4個字節)、double(占用8個字節) 字符型: char

????????布爾型: boolean

2.ArrayList和LinkedList的區別?

????????可以說ArrayList和LinkedList除了是同屬于集合類,其他都是不同的,因為他們本身的實現是兩種不同的實現方式,ArrayList 維護的是一個動態數組,LinkedList維護的是一個雙向鏈表,而他們之間的不同是數組與鏈表的特性比較
往集合中間插入數據時ArrayList比linkedList慢,ArrayList正好擴容的時候添加數據要比LinkedList慢,查詢數據ArrayList更快

3.HashMap是否是線程安全的? HashMap的底層原理?

????HashMap是線程不安全的,HashTable、ConcurrentHashMap是線程安全的 HashMap是基于哈希表的Map接口的非同步實現。 HashMap底層就是一個數組結構,數組中的每一項又是一個鏈表。數組+鏈表結構,新建一個HashMap的時候,就會初始化一個數組。Entry就是數組中的元素,每個Entry其實就是一個key-value的鍵值對,它持有一個指向下一個元素的引用,這就構成了鏈表,HashMap底層將key-value當成一個整體來處理,這個整體就是一個Entry對象。當需要存儲一個Entry對象時,會根據hash算法來決定在其數組中的位置,在根據equals方法決定其在該數組位置上的鏈表中的存儲位置;當需要取出一個Entry對象時,也會根據hash算法找到其在數組中的存儲位置, 在根據equals方法從該位置上的鏈表中取出Entry。JDK1.8做出了改變,使用 數組 + 鏈表 + 紅黑樹 的結構。當節點數不大于8時,還是一個鏈表結構,只不過插入節點時變成了 尾插法 ,當節點數大于8后,將從鏈表結構轉化成紅黑樹結構

4.成員變量和局部變量的區別?
???1)所在位置: 局部變量:在每個方法內部使用,出了方法不可用 成員變量:屬于每個類,在方法的外部,描述類的屬性
???2)作用范圍: 局部變量:作用在方法內部 成員變量:作用于每個類
???3)默認值: 局部變量:聲明之后系統不會賦予默認值,必須自己手動賦值,否則會報錯 成員變量:系統會根據該變量的類型賦予其相應的特征值,不手動賦值,也不會報錯
???4)所在內存位置不一樣: 成員變量是在對象創建以后存在于堆中,對象回收時,成員變量消失 局部變量是在方法被調用時存在于棧中,方法調執行結束,從棧中清除
???5)生命周期不同: 成員變量:隨對象的創建而創建,對象回收時,成員變量消失 局部變量:隨著方法的調用被創建,方法執行結束后,從棧中清除

5.說說重載與重寫的區別?

???【1】定義的位置不同:重載方法必須在同一個類中定義,而重寫方法必須在子類中定義。

???【2】方法名和參數列表不同:重載方法的方法名相同但參數列表不同,而重寫方法的方法名和參數列表必須與父類相同。

???【3】返回類型不同:重載方法的返回類型可以不同,而重寫方法的返回類型必須相同或是其子類。

? ? 【4】目的不同:重載的目的是為了提高代碼的可讀性和簡潔性,而重寫的目的是為了在子類中靈活地修改父類的行為。

6.java中String字符串類中的常用方法?

? ?charAt ? ? 根據下標獲取對應位置字符、
? ?contains ? 判斷一個字符串中是否包含某個字符串,返回值為boolean類型、
? ?equals ? ? 判斷兩個字符串內容是否相等、
? ?indexOf ? ?根據字符串獲取在字符串中的下標,如果不存在返回-1、
? ?length ? ? 獲取字符串的長度
? ?replace ? ?替換字符串、
? ?split ? ? ?根據分隔符拆分字符串,返回值為數組、
? ?substring ?根據下標截取字符串

7.面向對象的三大特征:封裝,繼承,多態
????????1.封裝:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。

?????????????????1)將屬性進行私有化(private)【不能直接修改屬性】

???????????????? 2)提供公共的(public)set/get方法,對數據進行判斷并賦值 a. 提供“set變量名(參數)”方法,用于設置成員變量的值,方法用public修飾 b. 提供“get變量名()”方法,用于獲取成員變量的值,方法用public修飾

????????????????3)提供相應的構造器/構造方法,與set/get方法結合

? ? ? ? 2.繼承:通過extends xxx實現,就是子類繼承父類的屬性行為,使得子類對象具有與父類相同的屬性、相同的行為。子類可以直接訪問父類中的非私有的屬性和行為。
? ? ? ? 3.多態:父類引用指向子類對象。
8.static關鍵字的使用

靜態屬性
????????被static修飾的屬性叫靜態屬性(類變量),static修飾的變量,不屬于某一個類,是共享的。不需要new對象就能調用。

靜態方法
????????①、靜態方法中,只能調用靜態的方法或屬性。(在靜態方法中,不能使用this關鍵字,super關鍵字)
????????②、靜態方法隨著類的加載而加載。可以通過“類.靜態方法”的方式調用

靜態代碼塊
????????代碼塊的作用:用來初始化類、對象

靜態內部類
????????Java允許將類A聲明在類B中,類A就是內部類,類B為外部類
????????內部類作為外部類的成員,可以調用外部類的結構,可以用static修飾(外部類不能用static修飾)

9.Java中構造方法是什么,用途是什么?

在Java中,構造方法是一種特殊類型的方法,用于創建對象時初始化對象的實例變量。構造方法的作用如下:
????????1. 創建對象:構造方法用于創建對象的實例。當使用new關鍵字創建一個對象時,會調用該對象對應的構造方法,并在構造方法中進行必要的初始化操作。
????????2. 初始化實例變量:構造方法用于初始化對象的實例變量。通過在構造方法中為對象的實例變量賦初值,確保對象在創建時具備合法的初始狀態。
????????3. 處理對象的初始化邏輯:構造方法可以包含任意邏輯和代碼,用于處理對象的初始化邏輯。例如,可以在構造方法中進行計算、調用其他方法等操作,以確保對象在創建后能夠滿足特定需求。
????????4. 提供重載的構造方法:可以定義多個構造方法,通過不同的參數列表來實現方法的重載。這樣可以在創建對象時根據不同的參數選擇不同的構造方法,以滿足不同的需求。

問題:什么是構造方法?
和類名相同,不寫返回值的方法,在創建對象時會調用構造方法,用于給屬性賦值/初始化一些配置信息等

問題:靜態代碼塊和構造方法哪個先執行
靜態代碼塊

問題:構造方法可以被繼承嗎
不能

10.java中的this關鍵字

? ? ? ? this用于引用當前對象的實例,調用本類中的成員變量,其他方法,和本類中的其他構造方法。

11.Java的多線程中的synchronized

synchronized中文意思是同步,也稱之為“同步鎖”。
synchronized的作用是保證在同一時刻, 被修飾的代碼塊或方法只會有一個線程執行,以達到保證并發安全的效果。
Synchronized修飾一個方法很簡單,就是在方法的前面加synchronized,synchronized修飾方法和修飾一個代碼塊類似,只是作用范圍不一樣,修飾代碼塊是大括號括起來的范圍,而修飾方法范圍是整個函數。
方式1:同步方法
public synchronized void method()
{
? ?// todo
}
方式2: 同步代碼塊
public void method()
{
? ?synchronized(this) {
? ? ? // todo
? ?}
}

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

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

相關文章

【QT】輸入類控件

目錄 Line Edit 核心屬性 核心信號 正則表達式 示例:使用正則表達式驗證輸入框內容 示例:切換輸入框密碼模式下的顯示狀態 Text Edit 核心屬性 核心信號 示例:獲取多行輸入框的內容同步顯示到label 示例:獲取文本的選…

三生隨記——眉筆詭事

在一個被遺忘的古鎮上,流傳著一個關于眉筆的詭異傳說。這個古鎮坐落在群山的環抱中,鮮少有人知曉它的存在。而在這片土地上,卻有著一件被視為詛咒之源的眉筆。 眉筆的來歷無人知曉,只知它在一夜之間出現在鎮上的古董店中。那支眉筆…

一文講懂npm link

前言 在本地開發npm模塊的時候,我們可以使用npm link命令,將npm 模塊鏈接到對應的運行項目中去,方便地對模塊進行調試和測試 用法 包鏈接是一個兩步過程: 1.為依賴項創建全局軟鏈npm link。一個符號鏈接,簡稱軟鏈&a…

0702_ARM5

練習:使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 發送一個字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

c# 操作mysql的幫助類

MySqlHelper 的靜態類,其中包含了一些用于執行 MySQL 數據庫操作的方法。這些方法包括執行存儲過程、插入、更新、刪除操作以及執行數據庫事務查詢操作等。 該類中的方法主要有: ExecuteNonQuery 方法:用于執行存儲過程、插入、更新、刪除操…

如何降低布隆過濾器的誤判率

降低布隆過濾器的誤判率(也稱為假陽性率)是布隆過濾器應用中一個關鍵的問題。誤判率主要來源于哈希碰撞,即不同的元素可能被哈希到相同的位置。為了降低誤判率,可以從以下幾個方面進行優化: 1. 增加哈希函數的個數 原…

Asp.net Core 反射加載dll

定義一個類庫,定義接口 namespace Plugin {public interface IPlugin{void EllisTest();} }定義另外一個類庫,引用上面的類庫,實現接口 using Plugin;namespace UserCustom {public class Custom : IPlugin{public void EllisTest(){Conso…

二刷力扣——DP算法(子序列問題)

300. 最長遞增子序列 定義是以本元素結尾&#xff0c;所以公式初始化都好弄。但是太慢 class Solution {public int lengthOfLIS(int[] nums) {int nnums.length;int[] dp new int[n];//以自己結尾的最長遞增子序列dp[0]1;int maxzi1;for(int i1;i<n;i){dp[i]1;for(int j…

QT中QDomDocument讀寫XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

【YOLOv5進階】——引入注意力機制-以SE為例

聲明&#xff1a;筆記是做項目時根據B站博主視頻學習時自己編寫&#xff0c;請勿隨意轉載&#xff01; 一、站在巨人的肩膀上 SE模塊即Squeeze-and-Excitation 模塊&#xff0c;這是一種常用于卷積神經網絡中的注意力機制&#xff01;&#xff01; 借鑒代碼的代碼鏈接如下&a…

在C#中使用RabbitMQ做個簡單的發送郵件小項目 _

前言 好久沒有做項目了&#xff0c;這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作&#xff0c;之前在我的個人博客里面回復評論和友鏈申請是會通過發送郵件來通知對方的&#xff0c;不過當時只是簡單的進行了異步操作。那么這次來使用RabbitMQ去統一發送郵件&#x…

vue中路由來回切換頁面直接卡死

今天發現一個很嚴重的問題&#xff0c;項目好不容易做好了&#xff0c;結果頁面多了&#xff0c;切換之后卡死。頁面所有的交互效果都失效了。 排查了許久的錯誤原因最后發現原來是路由名稱重復了。 如上圖當頁面跳轉到riskdetails詳細頁面之后&#xff0c;框架則被這個詳情頁…

隨機森林R語言預測工具

隨機森林&#xff08;Random Forest&#xff09;是一種基于決策樹的集成學習方法&#xff0c;它通過構建多個決策樹并集成它們的預測結果來提高預測的準確性。在R語言中&#xff0c;我們可以使用randomForest包來構建和訓練隨機森林模型。以下是對隨機森林的詳細介紹以及使用R語…

java高仿真數據生成器-需要的拿去

java高仿真數據生成器源碼-需要的拿去 nit-random-tools 介紹&#xff1a;高仿真數據生成器 逆天開源 java 證號碼, 姓名&#xff0c;職業, 日期&#xff0c;手機號 生成器 功能列表 編號功能描述class1號 生成器NitIdcardGenerator2姓名 生成器NitChineseNameGenerator3職…

node.lib下載失敗,手動下載并配置

在無網絡環境&#xff0c;或者網絡不好的環境&#xff0c;node.lib會下載失敗&#xff0c;此時可手動下載并進行配置。 我們以 node16.17.0 為例&#xff1a; 下載地址 分別下載node.lib和headers https://registry.npmmirror.com/-/binary/node/v16.17.0/win-x64/node.lib…

目標檢測算法的技術革新與應用案例

引言 目標檢測作為計算機視覺領域中的一項關鍵技術&#xff0c;近年來取得了顯著進展。從傳統的基于特征的方法到如今的深度學習算法&#xff0c;目標檢測技術在準確性、速度和魯棒性上均實現了大幅提升。本文將深入探討目標檢測算法的技術原理、發展歷程、最新進展以及實際應…

HarmonyOS--開發者證書考試地址

初級證書&#xff1a;華為開發者學堂 高級證書&#xff1a;華為開發者學堂 對應課程&#xff1a;華為開發者學堂

Linux rpm與yum

一、rpm包管理 rpm用于互聯網下載包的打包及安裝工具&#xff0c;它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。RPM是RedHat Package Manager (RedHat軟件包管理工具&#xff09;的縮寫&#xff0c;類似windows的setup.exe&#xff0c;這一文件格式名稱雖然打上了R…

辦理北京公司注銷流程和步驟說明

公司的生命周期是多變的&#xff0c;有時候&#xff0c;業務可能會結束或者出現其他原因&#xff0c;需要注銷公司。注銷公司是一個復雜的法律過程&#xff0c;需要遵循一系列的步驟和提交特定的材料。下面我們將詳細介紹北京注銷公司的流程以及需要準備的材料&#xff0c;以幫…

《等保測評實戰指南:從評估到加固的全程解析》

在當今數字化時代&#xff0c;信息安全已成為企業生存與發展的基石。隨著網絡攻擊手段的不斷演變和復雜度的提升&#xff0c;信息系統等級保護&#xff08;簡稱“等保”&#xff09;作為國家信息安全保障體系的重要組成部分&#xff0c;其重要性日益凸顯。《等保測評實戰指南&a…