Scratch貓爪老鼠游戲 電子學(xué)會圖形化編程scratch等級考試三級真題答案2019-9
789
2022-05-29
文章標(biāo)題
一: 前言
二: 面試挑戰(zhàn)
三: 面試題目
四: 面試大全第一階段題目大綱
五: 總結(jié)
一: 前言
歷經(jīng)一個多月,利用斷斷續(xù)續(xù)的零星時間,面試大全的第一階段題目已經(jīng)基本整理完畢,雖然不敢說是全網(wǎng)最全的面試題目,但是敢肯定都是真實面試經(jīng)歷總結(jié)出來的,題目范圍也很廣泛,絕對是超出你的想象,相信很多人能夠在其中找出和他們之前面試過相同或者類似的題目。
二: 面試挑戰(zhàn)
為了刺激本人持續(xù)更新的動力和激勵大家學(xué)習(xí)的興趣,這里設(shè)置一個面試挑戰(zhàn)。
凡是滿足下面的挑戰(zhàn)條件的,如果一個月內(nèi)沒有拿到一個Offer的,
免費提供簡歷封裝建議和相關(guān)面試題目解答。
如果面試通過的,截圖分享,讓大家一起見證,具體條件如下:
1、計算機相關(guān)專業(yè)或者經(jīng)過計算機相關(guān)專業(yè)的培訓(xùn)(不少于3個月,正常來說培訓(xùn)機構(gòu)培訓(xùn)時間不會少于三個月),準(zhǔn)備從事JAVA開發(fā)人員。
2、從事的工作是JAVA開發(fā),年限是1-3年(大神的話就忽略我說的,可以直接退出了)或者是符合計算機相關(guān)專業(yè),準(zhǔn)備從學(xué)校出來就業(yè)的。
3、持續(xù)學(xué)習(xí)本人《面試大全》至少兩個月且對其中的內(nèi)容基本掌握的。
4、需要提供相關(guān)面試證據(jù)或者是面試題目。
如果大家對這個感興趣的,可以關(guān)注【IT學(xué)習(xí)日記】回復(fù)【面試挑戰(zhàn)】即可參與,現(xiàn)在參與還免費贈送一份面試資料。
三: 面試題目
一: 什么是函數(shù)式接口
定義:
首先是一個接口,其次這個接口只能存在一個抽象方法。
特點:
1、接口有且僅有一個抽象方法
2、允許定義靜態(tài)方法
3、允許定義默認方法
4、允許java.lang.Object中的public方法
5、FunctionInterface注解不是必須的,如果一個接口符合"函數(shù)式接口"定義,那么加不加該注解都沒有影響。加上該注解能夠更好地讓編譯器進行檢查。如果編寫的不是函數(shù)式接口,但是加上了@FunctionInterface,那么編譯器會報錯。
二: 反射創(chuàng)建Class對象的三種方式
1、對象.getClass()
2、類.class
3、Class.forName(類的全路徑)
得到class對象后,可以通過newInstance()或者newInstance(args)來創(chuàng)建無參或者有參的對象。
三:基本數(shù)據(jù)類型計算
小于int的數(shù)據(jù)類型(byte, char, short)進行運算時,首先會把這些類型的變量值強制轉(zhuǎn)為int類型進行計算,最后會得到int類型的值,因此在這種類型計算的時候,非常需要注意計算結(jié)果的接收類型,如short計算,要使用Int類型接收,否則無法通過編譯。
四:Short類型的計算
1、總結(jié):
小于int類型的取值運算時都會被自動轉(zhuǎn)換成int后再進行運算,因此要注意接收值的類型。
2、具體案例:
1、short a = 1; a = a + 1; 編譯不通過,應(yīng)該改為: a = (short)a + 1;
2、a +=1:編譯通過
java語言規(guī)范中關(guān)于復(fù)合賦值(+=、-=等等): E1 op = E2等價與E1 = (T)(E1 op E2),其中T表示E1的數(shù)據(jù)類型,即復(fù)合賦值自帶了隱式轉(zhuǎn)換。
五:常見的JAVA類型和數(shù)據(jù)庫類型對應(yīng)關(guān)系
integer、int —> int
tinyint、smallint —> short
bigint —> long
decimal、numeric —> java.math.BigDecimal
float —> float
double —> double
char、varchar —> String
boolean、bit —> boolean
date —> java.sql.Date
time —> java.sql.Time
timestamp —> java.sql.Timestamp
blob —> java.sql.Blob
clob —> java.sql.Clob
array —> java.sql.Array
六: Integer類型的最大最小值,LongL類型的最大最小值
一: Integer類型所占的字節(jié)數(shù)為: 4個字節(jié),也就是32位,也就是2的32次方
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
二:Long占8個字節(jié)
最小值:Integer.MIN_VALUE=-9223372036854775808
最大值:Integer.MAX_VALUE=9223372036854775807
七:系統(tǒng)的健壯性指的是什么
健壯的程序并不是沒有異常,而是能夠處理異常和定位異常!
健壯性是指軟件對于規(guī)范要求以外的輸入情況的處理能力。所謂健壯的系統(tǒng)是指對于規(guī)范要求以外的輸入能夠判斷出這個輸入不符合規(guī)范要求,并能有合理的處理方式。
八: 雙斜杠和單斜杠的區(qū)別
1.url前面是雙斜杠(//mljr.com/car.html)雙斜杠是相對協(xié)議進行url轉(zhuǎn)換的,如果當(dāng)前頁使用的是https協(xié)議,那么轉(zhuǎn)換后的url就是https://mljr.com/car.html。
2.url前面是單斜杠(/newcar.html) 單斜杠是相對服務(wù)器根目錄進行url轉(zhuǎn)換的
九:基本類型的常見裝拆箱場景
特點:
裝箱操作會創(chuàng)建對象,頻繁的裝箱操作會消耗許多內(nèi)存,影響性能,所以可以避免裝箱的時候應(yīng)該盡量避免。
場景:
1、當(dāng)兩種不同類型用==比較時,包裝器類的需要拆箱, 當(dāng)同種類型用==比較時,會自動拆箱或者裝箱。
2、當(dāng)一個基礎(chǔ)數(shù)據(jù)類型與封裝類進行==、+、-、*、/運算時,會將封裝類進行拆箱,對基礎(chǔ)數(shù)據(jù)類型進行運算
3、不同類型的包裝類equals比較返回的應(yīng)該是false,因為基礎(chǔ)數(shù)據(jù)類型都重寫了equals方法,會先判斷是不是相同類型,如果是才會判斷值是否一致
4、equals(Object o) 因為原equals方法中的參數(shù)類型是封裝類型,所傳入的參數(shù)類型(a)是原始數(shù)據(jù)類型,所以會自動對其裝箱,反之,會對其進行拆箱
5、當(dāng)兩種不同類型用==比較時,包裝器類的需要拆箱, 當(dāng)同種類型用==比較時,會自動拆箱或者裝箱。
十:閉包
(一): 定義
是一種能被調(diào)用的對象,它保存了創(chuàng)建它的作用域的信息。Java并不能顯式地支持閉包,但對于非靜態(tài)內(nèi)部類而言,它不僅記錄了其外部類的詳細信息,還保留了一個創(chuàng)建非靜態(tài)內(nèi)部類對象的引用,并且可以直接調(diào)用外部類的private成員,因此可以把非靜態(tài)內(nèi)部類當(dāng)成面向?qū)ο箢I(lǐng)域的閉包。
(二): 內(nèi)部類是面向?qū)ο蟮拈]包 因為他不僅包含外圍類對象的信息 還自動擁有一個指向此外圍類對象的引用 在此作用域內(nèi) 內(nèi)部類有權(quán)操作所有的成員 包括private成員。
(三): 作用
閉包最主要的作用,是為變量提供一個生存環(huán)境
十一:一二三方包的區(qū)別
一方包(也稱一方庫)、二方包(也稱二方庫)、三方包(也稱三方庫)說明:
一方包:本工程中的各模塊的相互依賴
二方包:公司內(nèi)部的依賴庫,一般指公司內(nèi)部的其他項目發(fā)布的jar包
三方包:公司之外的開源庫, 比如apache、ibm、google等發(fā)布的依賴
十二:MIME類型
定義:
互聯(lián)網(wǎng)媒體類型,MIME類型就是設(shè)定某種擴展名的文件用一種應(yīng)用程序來打開的方式類型,當(dāng)該擴展名文件被訪問的時候,瀏覽器會自動使用指定應(yīng)用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。
服務(wù)器將MIME標(biāo)志符放入傳送的數(shù)據(jù)中來告訴瀏覽器使用哪種插件讀取相關(guān)文件。
十三:有無狀態(tài)登錄區(qū)別
(一):有狀態(tài)登陸
定義: 服務(wù)端需要記錄每次會話的客戶端信息,從而識別客戶端身份,如:Session和Cookie。
缺點:服務(wù)端需要保存大量數(shù)據(jù),增加了服務(wù)端的壓力,服務(wù)端保存用戶狀態(tài),不支持集群化部署。
(二): 無狀態(tài)登陸
定義:微服務(wù)集群中的每個服務(wù),對外提供的都使用Restful風(fēng)格的接口,RestFul風(fēng)格的一個最重要的規(guī)范,服務(wù)的無狀態(tài)性即:服務(wù)端不保存任何客戶端請求者信息,客戶端的每次請求必須具備自描述信息,通過這些信息識別客戶端身份
優(yōu)點:
1、客戶端請求不依賴于服務(wù)端信息,多次請求不需要必須訪問同一臺服務(wù)器
2、服務(wù)段的集群和狀態(tài)對客戶端透明
3、服務(wù)段可以任意的遷移和伸縮 - 可以方便的進行集群化部署
4、減小了服務(wù)段的存儲壓力
(三): 無狀態(tài)登錄的步驟
1、客戶端發(fā)送賬戶名/密碼到服務(wù)端進行認證
2、認證通過后,服務(wù)端將用戶信息加密并編碼成一個token,返回給客戶端
3、以后每次客戶端請求,都需要攜帶認證的token
4、服務(wù)端對客戶發(fā)送來的token進行解密,判斷是否有效,并獲取用戶登陸信息
十四:JWT數(shù)據(jù)格式
主要包含以下三部分?jǐn)?shù)據(jù):
1、Header: 頭部,通常包含以下消息(對頭部進行Base64Url編碼,可以得到第一部分?jǐn)?shù)據(jù))
聲明類型,如:JWT 加密算法:自定義
1
2
2、Payload-載荷,就是有效數(shù)據(jù),在RFC7519中,有7個示例信息
iss (issuer):表示簽發(fā)人 exp (expiration time):表示token過期時間 sub (subject):主題 aud (audience):受眾 nbf (Not Before):生效時間 iat (Issued At):簽發(fā)時間 jti (JWT ID):編號
1
2
3
4
5
6
7
對頭部進行Base64Url編碼,可以得到第二部分?jǐn)?shù)據(jù)
3、Signature:簽名:
整個數(shù)據(jù)的認證信息,一般根據(jù)前兩部的數(shù)據(jù),加上服務(wù)的密鑰secret(密鑰保存在服務(wù)段,不能泄漏給客戶端),通過Header配置的加密算法進行加密生成,用于驗證整個數(shù)據(jù)完成和可靠性。三部分的數(shù)據(jù)之間使用"."分割。
十五:類的加載機制
Java中類的加載是使用”雙親委派機制”。
雙親委派機制:
當(dāng)一個類加載器接收到類的加載請求時,它不會馬上嘗試自己加載,而是將這個請求委派給父級類加載器,每一個層級的加載器都是如此,因此所有的類加載器都會傳給頂層的啟動類加載器,只有當(dāng)父類加載器無法加載時,子類加載器才會去進行加載,類加載器之間是組合關(guān)系而不是繼承關(guān)系。
特性:
1、委派(delegation):子類加載器委派給父類加載器加載;
2、可見性(visibility):子類加載器可訪問父類加載器加載的類,父類不能訪問子類加載器加載的類;
3、唯一性(uniqueness):可保證每個類只被加載一次,比如 Object 類是被 Bootstrap ClassLoader 加載的,因為有了雙親委派模型,所有的 Object 類加載請求都委派到了 Bootstrap ClassLoader,所以保證了只被加載一次。
十六:雙親委派機制的作用是什么
1、一個類只能被一個加載器加載,防止類被多個加載器加載
2、保證核心.class不能被篡改。通過委托方式,不會去篡改核心.clas,即使篡改也不會去加載,即使加載也不會是同一個.class對象了。不同的加載器加載同一個.class也不是同一個Class對象。這樣保證了Class執(zhí)行安全。
十七:JAVA中存在哪些類加載器
1、啟動類加載器(Bootstrap/Primordial/NULL ClassLoader):
頂層的類加載器,沒有父類加載器。負責(zé)加載 /lib 目錄下的,或者被 -Xbootclasspath 參數(shù)所指定路徑中的類。
2、擴展類加載器(Extension CLassLoader):
由 sun.misc.Launcher$ExtClassLoader 實現(xiàn),負責(zé)加載/lib/ext 目錄下,或被 java.ext.dirs 系統(tǒng)變量所指定的目錄下的所有類庫。
3、應(yīng)用程序類加載器(Application/System ClassLoader):
由sun.misc.Launcher$AppClassLoader 實現(xiàn)。它負責(zé)加載 classpath 下所指定的類庫,如果應(yīng)用程序沒有自定義過自己的類加載器,一般情況下這個就是程序中默認的類加載器。
4、CustomClassLoader(用戶自定義類加載器)
java編寫,用戶自定義的類加載器,可加載指定路徑的class文件
十八: Abstract、final、static關(guān)鍵字的區(qū)別
1、Abstract表示抽象的,可以用于修飾類、方法,表示抽象類、抽象方法,具體的方法需要子類去重寫。Final、static、private關(guān)鍵字不能與abstract關(guān)鍵字共用。
2、Final表示最終的,可以用于修飾類、方法、屬性。表示類不可以被繼承、方法不能被重寫、屬性是常量。final不能修飾構(gòu)造方法
3、Static表示靜態(tài)的,可以修飾類、方法、變量、代碼塊。被修飾的方法和變量可以直接通過類名進行訪問。父類的靜態(tài)方法可以被子類的靜態(tài)方法覆蓋。
十九:為什么被Static修飾的方法和屬性可以直接通過類名訪問
類是保存在字節(jié)碼文件中的,JAVA中的類加載是指通過I/O流將類的字節(jié)碼文件加載到JVM中。JVM會通過類的路徑來找到字節(jié)碼,被static修飾的變量、方法在類加載到JVM中時就被創(chuàng)建并初始化了,類的加載只會進行一次,故被static修飾的方法、變量可以直接通過類名進行訪問。
二十:抽象類可以繼承實體類?
可以,只要實體類有明確的構(gòu)造方法。在JAVA的API文檔中有說到,Object類是所有類的父類,因此抽象類是可以繼承實體類的。
二十一:抽象類可以實例化?
不可以直接通過new來進行實例化,但是可以通過多態(tài)的方式”間接”實例化,如: 動物 = new 老虎();
延伸: 接口是不可以被實例化的,因為接口沒有構(gòu)造函數(shù);
二十二:為什么main方法要定義成static?
因為在類加載的過程中是無法創(chuàng)建對象的,而靜態(tài)方法可以直接通過類進行調(diào)用,所以在main方法定義成靜態(tài)的,可以在類加載的時候通過main方法入口區(qū)運行程序。
二十三: 類何時被加載
1、創(chuàng)建對象的時候,對應(yīng)命令:new
2、調(diào)用類的靜態(tài)方法,對應(yīng)命令:invokeStaic
3、調(diào)用類的靜態(tài)屬性 get/setStatic
加載子類的時候會先加載父類,類加載會有延遲加載的原則,只有需要的時候采取加載。
二十四:反射中Class.forName和ClassLoader的區(qū)別
1、兩者都可以對類進行加載。ClassLoader遵循的是雙親委派模型,最終調(diào)用啟動類加載器,實現(xiàn)通過一個類的全限定名獲取該類的二進制字節(jié)流,放入到JVM中。forName最終也是調(diào)用ClassLoader來實現(xiàn)。
2、Class.forName對類加載時進行了初始化,而ClassLoader的loadClass并沒有對類進行初始化,只是將類添加到了虛擬機中。
3、使用場景:
(1) Spring中的IOC使用了ClassLoader的方式加載。
(2)JDBC中用了Class.forName的方式,因為JDBC規(guī)范中明確需要Driver即數(shù)據(jù)庫驅(qū)動類必須向DriverManager注冊自己。
二十五:類的加載過程
1、加載: 通過類的全限定名獲取類的二進制字節(jié)流,將它轉(zhuǎn)換成方法區(qū)中運行時的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中形成類對應(yīng)的Class對象 2、鏈接 (1) 驗證: 檢查導(dǎo)入類或者接口的二進制正確性(如文件格式、元數(shù)據(jù)、字節(jié)碼驗證、符號引用等) (2) 準(zhǔn)備: 將類的靜態(tài)變量分配并初始化存儲空間 (3) 解析: 將常量池中的符號引用轉(zhuǎn)為直接引用 3、初始化: 激活類的靜態(tài)變量的初始化JAVA代碼和靜態(tài)代碼快,并初始化程序員設(shè)置的值。 4、使用: 此時的類可以在程序中進行創(chuàng)建對象并使用 5、銷毀 在合適的時間點,垃圾回收會對無用的對象回收,程序停止或者異常時,類也會被銷毀。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
二十六:會話跟蹤技術(shù)
1、Cookie和Session是常見的會話跟蹤技術(shù)。
2、Cookie:
一種會話技術(shù),因為http是無狀態(tài)請求,所以需要借助會話技術(shù)來記錄客戶端的狀態(tài)。Cookie就是其中的一種,它的默認生命周期是瀏覽器的一次會話,一般是存儲在內(nèi)存中,如果設(shè)置了過期時間,則瀏覽器會將它持久化到硬盤上。
它具有不可跨域性,存在硬盤上的cookie可以在不同的瀏覽器進行間共享,同時,它也維護這session的唯一標(biāo)識。
3、Session
一種會話技術(shù),它是存儲在服務(wù)器端。當(dāng)執(zhí)行HttpServletRequest.getSession(true)時被創(chuàng)建。
4、刪除場景:
1、使用HttpSession.inValidate();
2、時間超過設(shè)置的session最大有效時間
3、服務(wù)器停止
設(shè)置有效時間:調(diào)用setMaxInactiveInterval(時間),-1表示永不過期
二十七:Session和Cookie的區(qū)別
1、Cookie是存儲在客戶端,Session是存儲在服務(wù)端
2、Cookie維護著訪問Session的SessionId,通過SessionId可以訪問到指定的Session
3、因為Cookie是存儲在客戶端的,所以安全性低,Session是存儲在服務(wù)端,安全性高
4、Cookie的大小一般是有限制的,但是Session的沒有
5、Cookie只能存儲String類型的對象,Session則沒有限制
二十八:如果禁用了cookie,session還有作用?
有的,通過cookie攜帶的sessionID訪問session只是其中的一種方式。如果瀏覽器禁止了Cookie,還可以通過以下的方式訪問session:
1、URL重寫: 將SessionID直接附加在URL路徑中
2、表單隱藏域: 添加一個隱藏標(biāo)簽,name為jsessionid, 以便在表單提交時將sessionID傳遞給服務(wù)器
二十九:Session集群化時如何保持一致
1、Session復(fù)制:
將一臺服務(wù)器上的Session復(fù)制到集群中的其他機器上。但是在集群規(guī)模大時,需要占用大量的資源和帶寬,多用戶時,還可能導(dǎo)致內(nèi)存不夠使用。
2、會話綁定/黏粘
用戶的所有請求都在同一臺服務(wù)器上處理。可以通過負載均衡的IP Hash地址算法實現(xiàn)。但是、不符合高可用、服務(wù)器宕機時則用戶無法訪問。
3、將Session存儲在Cookie中
因為Cookie有大小限制,而且如果Cookie數(shù)據(jù)很多,每次傳輸會影響性能,且存在安全風(fēng)險
4、Session持久化
將Session持久化到數(shù)據(jù)庫或者緩存中,每次請求都去讀取判斷。如果是在緩存中,可能存在緩存和數(shù)據(jù)不一致的情況
三十:分布式和集群概念
分布式:
將不同地點、或具有不同功能或者具有不同數(shù)據(jù)的多臺計算機通過網(wǎng)絡(luò)連接起來,在控制系統(tǒng)的協(xié)調(diào)下,完成大規(guī)模的信息處理。
集群:
同一業(yè)務(wù)功能,部署在不同的機器上,從而達到高可用。
特點:
集群是物理形態(tài),而分布式是工作方式。
四: 面試大全第一階段題目大綱
廢話不多說,直接上面試題目,如果覺得這些題目可能對你有幫助,歡迎繼續(xù)閱讀文章。
注意: 題目不止這些,會一直持續(xù)不斷更新最新的面試題和面試資料。
五: 總結(jié)
由于文章篇幅的限制,面試大全的第一章暫時到這里就告一段落。如果有意見或者建議,可以在下方或者私信留言,看到會及時回復(fù),也歡迎大家參加面試挑戰(zhàn)和面試題投稿,希望大家早日獲得心儀的Offer,如果覺得文字對你有幫助,歡迎關(guān)注和。
面試大全系列文章會保持穩(wěn)定的更新速度,大概每周兩更到三更,感興趣和可以關(guān)注我。
如果想?yún)⒓用嬖囂魬?zhàn),可以私信回復(fù)【
面試挑戰(zhàn)
】即可,如果想進行面試題目投稿,可以私信回復(fù)【
面試題目投稿
】即可,如果想獲取更多面試問題和資料,查看最新的面試題目更新進度,可以關(guān)注我,私信【
面試資料
】即可,謝謝大家的閱讀和關(guān)注。
Java 數(shù)據(jù)結(jié)構(gòu)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。