失敗的面試經歷(??∧??)

一.面向對象的三大特性

1.封裝:將對象內部的屬性私有化,外部對象不能夠直接訪問,但是可以提供一些可以使外部對象操作內部屬性的方法。

2.繼承:類與類之間會有一些相似之處,但也會有一些異處,使得他們與眾不同,繼承就是在父類的基礎上,創建一個與父類有相同之處,但是也可以聲明自己獨有的方法與屬性的對象,這樣做可以增加代碼的復用,使得維護或擴展更加的方便,靈活。

3.多態:一個對象有多種狀態,這涉及到了向上或向下轉型。
多態的特點:

  • 對象類型和引用類型之間存在繼承關系
  • 引用類型變量的方法屬于哪個類,要想知道這個問題,要看運行期間
  • 多態不能執行子類擁有但父類沒有的方法
  • 如果子類重寫了父類的方法,那么直接執行的是子類重新后的方法,若沒重寫,則執行的是父類方法

二.如何創建線程

1.繼承Thread類并重寫run()方法

  • 定義Thread類的子類,并重寫run()方法,run()方法中的代碼就是線程所要執行的任務,所以run()方法被稱為執行體(線程體)
  • 創建Thread類的子類的實例對象,就是創建了線程的對象
  • 調用線程對象的start()方法來啟動該線程
  • Java不支持多繼承
package thread;public class ThreadTest extends Thread{String name;ThreadTest(String name){this.name=name;}@Overridepublic void run() {System.out.println("this is a thread");}
}
class StartTest{public static void main(String[] args) {ThreadTest test=new ThreadTest("thread");test.start();}
}

2.實現Runnable接口配合Thread

  • 定義Runnable接口的實現類,并重寫run()方法,run()方法中的代碼就是線程所要執行的任務,所以run()方法被稱為執行體(線程體)
  • 創建Runnable接口的實現類的對象,使此對象作為Thread的target來創建Thread對象,這個對象才是真正的線程對象
  • 調用線程對象的start()方法來啟動線程
  • Runnable接口支持多繼承
package thread;public class RunnableTest implements Runnable{String name;RunnableTest(String name){this.name=name;}@Overridepublic void run() {System.out.println("this is a thread");}
}
class RunnableStartTest{public static void main(String[] args) {RunnableTest test=new RunnableTest("thread");Thread thread=new Thread(test);thread.start();}
}

3.通過Callable和FutureTask創建線程

  • 創建Callable接口的實現類,并重寫call()方法,call方法是線程的執行體
  • 創建Callable接口的實現類的實例,然后創建包裝了Callable接口的實現類實例的FutureTask類的實例對象,FutureTask對象封裝了實現類中的call()方法的返回值(FutureTask是一個包裝器,它通過包裝Callable接口的實現類來實現,它同時實現了Future和Runnable兩個接口)
  • 使用FutureTask對象作為Thread的target來創建實例,此實例對象為線程的對象
  • 調用線程對象的start()方法來啟動線程
  • 調用FutureTask對象的get()方法來獲取子線程結束的返回值
package thread;import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;public class CallableAndFutureTaskTest implements Callable {String name;CallableAndFutureTaskTest(String name){this.name=name;}@Overridepublic Object call() throws Exception {System.out.println("this is a thread");return null;}
}
class CallableAndFutureTaskStartTest{public static void main(String[] args) throws Exception{CallableAndFutureTaskTest test=new CallableAndFutureTaskTest("thread");FutureTask futureTask=new FutureTask(test);Thread thread=new Thread(futureTask);thread.start();String result=(String) futureTask.get();System.out.println(result);}
}

三.事務的四大特性(ACID)

1.原子性:事務是最小的執行單位,確保了動作要么完全完成,要么就是完全不起作用
2.一致性:處理的數據是一致的,例如轉賬者和收款者的總金額是不變的
3.隔離性:發生并發訪問數據庫時,一個事物不會被另一個事物所影響
4.持久性:一個事務提交之后,他對數據庫中數據的影響是持久的,即使出現了數據庫障礙也不會影響。

四.Get()方法與Post()方法的區別

Get()方法和Post()方法是Http協議中兩種常用的請求方法,但是在不同的場景和目的下的使用是不同的。

1.在語義上:Get()方法用于獲取和查詢資源,而Post()方法更加偏向于修改或創建。這就意味著Get請求擁有等冪性。而Post()方法可能會有副作用,即每次執行都可能產生不同的結果,影響資源的狀態。

2.在結構上:Get()方法的請求的參數傳遞會顯示到url上,形成查詢字符串(querystring),而Post()方法的參數在執行體(body)中,Get請求的查詢字符串長度會受到url的限制,而Post請求則不會有明確的限制。

3.在緩存上:由于Get請求是等冪的,所以對于Get請求來說,在瀏覽器中會有緩存來保存數據,這樣可以提高Get()方法的獲取或查詢的效率;而Post請求可能會有副作用,所以并沒有緩存機制。

4.在安全性上:本質上Get請求和Post請求都不是絕對安全的,因為Http協議都是明文傳輸,無論是url,header或者是body都有可能被竊取,所以應該使用Http協議加密傳輸數據。但是在一些應用場景下,Get方法要比Post方法更加不安全,因為Get方法的參數傳遞會在url上顯示出來,在一些代理日志上或者瀏覽器的歷史上可以被找到,所以在傳輸一些私密數據的時候應該使用Post方法進行傳遞。

五,數據庫(MySQL)的左,右連接以及內連接

1.Left join...on:左連接,以左表為基礎,查詢左表的所有數據以及滿足on關鍵字后面的條件的右表數據,左連接又稱左外連接,是外連接的一種。
2.Right join...on:右連接,以右表為基礎,查詢右表的所有數據以及滿足on關鍵字后面的條件的左表數據,右連接又稱為右外連接,是外連接的一種。
3.Inner join...on:內連接,以左右兩表為參考對象,查詢左右兩表同時滿足on關鍵字后面的條件的數據。

MySQL中沒有全外連接,所以就不解釋了。

首先創建了兩個表table_left和table_right.

---------------------------------------------------------------------------------------------------------------------------------

左連接:

SELECT * FROM table_left LEFT JOIN table_right ON table_left.id=table_right.id

結果:

右連接:

SELECT * FROM table_left RIGHT JOIN table_right ON table_left.id=table_right.id

結果:

內連接:

SELECT * FROM table_left INNER JOIN table_right ON table_left.id=table_right.id

結果:

---------------------------------------------------------------------------------------------------------------------------------總結一下,這就相當于一個集合A和B

A left B join:A
A right B join:B
A inner B join:A∩B

左連接:

右連接:

內連接:

全連接:

六.數據庫分表查詢中使用到的in關鍵字可以使用什么代替

一般在做SQL優化的時候講究使用EXISTS帶替代IN的做法,理由是EXISTS執行效率要比IN高。

2d1876ca1c7bc478809ec24afc81dfe7.png

個人理解:

IN表示范圍,指某一字段在某一范圍之內,這個范圍一般使用子查詢來獲取,由此可知IN子查詢返回的結果應該就是這個范圍集。

EXISTS表示存在,指至少存在一處,這個條件由EXISTS子查詢來完成,但是在這里EXISTS子查詢返回的結果卻不再是一個結果集,而是一個布爾值(true或false),其實這個挺好理解的,EXISTS就表示如果子查詢能查到值則返回true,則執行EXISTS之前的語句。

具體MySQl的詳細介紹請看:MySQL數據庫的詳細介紹

---------------------------------------------------------------------------------------------------------------------------------以上問題都是面試官真實問的面試題,回答的一坨,在事后查詢資料加個人理解寫的blog,有錯誤之處還請多包容。

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

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

相關文章

算法及數據結構系列 - 二分查找

系列文章目錄 算法及數據結構系列 - BFS算法 文章目錄 二分查找框架思路經典題型二分查找尋找左側邊界尋找右側邊界 刷題875. 愛吃香蕉的珂珂1011. 在 D 天內送達包裹的能力392. 判斷子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…

SpringBoot的啟動原理?

大家好,我是鋒哥。今天分享關于【SpringBoot的啟動原理?】面試題。希望對大家有幫助; SpringBoot的啟動原理? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 Spring Boot的啟動原理主要是通過 SpringApplication 類來…

代碼隨想錄第55期訓練營第八天|LeetCode344.反轉字符串、541.反轉字符串II、卡碼網:54.替換數字

前言 這是我參加的第二次訓練營!!!爽!這次我將更加細致的寫清每一道難題,不僅是提升自己,也希望我自己的寫的文章對讀者有一定的幫助! 打卡代碼隨想錄算法訓練營第55期第八天(づ&a…

Json的應用實例——cad 二次開發c#

以下是一個使用AutoCAD C#.NET API實現你需求的示例代碼,代碼實現了提示用戶選擇一個實體,將一些字符串變量及其對應的值組成JSON格式數據存儲到實體的擴展數據(XData)中,并在彈出窗口中顯示該實體的所有擴展數據信息。…

Springboot的jak安裝與配置教程

目錄 Windows系統 macOS系統 Linux系統 Windows系統 下載JDK: 訪問Oracle官網或其他JDK提供商網站,下載適合Windows系統的JDK版本。網站地址:Oracle 甲骨文中國 | 云應用和云平臺點擊進入下滑,點擊進入下載根據自己的系統選擇&…

Python與區塊鏈隱私保護技術:如何在去中心化世界中保障數據安全

Python與區塊鏈隱私保護技術:如何在去中心化世界中保障數據安全 在區塊鏈世界里,透明性和不可篡改性是兩大核心優勢,但這也帶來了一個悖論——如何在公開賬本的同時保障用戶隱私?如果你的交易記錄對所有人可見,如何防止敏感信息泄露? Python 作為區塊鏈開發中最受歡迎的…

通俗詳解redis底層數據結構哈希表之漸進式rehash

一、為什么要用漸進式rehash? 假設你家的舊柜子(哈希表)裝滿了,需要換個大柜子。如果一次性把所有東西倒騰到新柜子,你可能得停下手頭所有事,累得半死(這就是傳統rehash的問題:卡頓…

基于 FPGA的HLS技術與應用

1、hls簡介 HLS ( high level synthesis )即高層次綜合,主要是利用高級編程語言實現算法。 2、循環優化 絕大多數循環都以串行的方式執行,這種執行方式比較浪費時間。對于串行的循環有兩種優化方式,轉為 并行( Unrol…

Kafka consumer_offsets 主題深度剖析

Kafka consumer_offsets 主題深度剖析 在 Apache Kafka 的消息消費機制中,確保消息被可靠消費是一個核心問題。為了解決這個問題,Kafka 設計了一個特殊的內部主題 consumer_offsets,用于跟蹤和管理消費者組的消費進度。 consumer_offsets 的…

基于javaweb的SpringBoot時裝購物系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

B站pwn教程筆記-5

復習和回顧 首先復習一下ELF文件在內存和磁盤中的不同。內存只關注讀寫這權限,會合并一些代碼段。 動態鏈接庫只在內存中單獨裝在一份 因為很多軟件都要用動態鏈接庫了,不可能一個個單獨復制一份。但是在有的調試環境下會單獨顯示出來各一份。 ld.so是裝…

云原生網絡拓撲:服務網格的量子糾纏效應

引言:數據平面的蟲洞躍遷 谷歌服務網格每日處理5萬億請求,Istio 1.20版本時延降低至0.8ms。螞蟻集團Mesh架構節省42%CPU開銷,AWS App Mesh實現100ms跨區故障切換。LinkedIn Envoy配置規則達1200萬條,騰訊云API網關QPS突破900萬。…

爬蟲——playwright獲取亞馬遜數據

目錄 playwright簡介使用playwright初窺亞馬遜安裝playwright打開亞馬遜頁面 搞數據搜索修改bug數據獲取翻頁優化結構 簡單保存 playwright簡介 playwright是微軟新出的一個測試工具,與selenium類似,不過與selenium比起來還是有其自身的優勢的&#xff…

Matrix-Breakout-2-Morpheus靶場通關心得:技巧與經驗分享

1.安裝靶機,并在虛擬機打開,確保和kali在同一個NAT網段 2.使用kali來確定該靶機的IP nmap -O 192.168.139.1/24 3.訪問該IP192.168.139.171 4.訪問robots.txt 5.掃描目錄 gobuster dir -u http://192.168.139.171 -x php,bak,txt,html -w /usr/share/d…

機器學習掃盲系列(2)- 深入淺出“反向傳播”-1

系列文章目錄 機器學習掃盲系列(1)- 序 機器學習掃盲系列(2)- 深入淺出“反向傳播”-1 文章目錄 前言一、神經網絡的本質二、線性問題解析解的不可行性梯度下降與隨機梯度下降鏈式法則 三、非線性問題激活函數 前言 反向傳播(Ba…

(一)飛行器的姿態歐拉角, 歐拉旋轉, 完全數學推導(基于坐標基的變換矩陣).(偏航角,俯仰角,橫滾角)

(這篇寫的全是基矢變換矩陣)不是坐標變換矩陣,坐標變換矩陣的話轉置一下,之后會有推導. 是通過M轉置變換到P撇點.

C語言和C++到底有什么關系?

C 讀作“C 加加”,是“C Plus Plus”的簡稱。 顧名思義,C 就是在 C 語言的基礎上增加了新特性,玩出了新花樣,所以才說“Plus”,就像 Win11 和 Win10、iPhone 15 和 iPhone 15 Pro 的關系。 C 語言是 1972 年由美國貝…

PCB畫圖軟件PROTEL99SE學習-05畫出銅箔來

sch設計的是各個器件的電連接。設計的就是各種節點的網絡表關系。不管你器件怎么擺放,好看不好看。都不重要。最終設計電路板是把網絡表中連線的網絡節點都用銅箔實物相連,讓他們導電。 網表導出后我們不用去看他,也不用管他的格式。 我們打開…

helm部署metricbeat

背景 在Elastic Stack 7.5版本之前,系統默認采用內置服務進行監控數據采集(稱為內部收集機制),這種設計存在顯著局限性: 當ES集群崩潰時自帶的節點監控也會隨之崩潰,直到集群恢復前,崩潰期間的…

【菜鳥飛】AI多模態:vsCode下python訪問阿里云通義文生圖API

目標 有很多多模態的AI工具,用的少就用在線圖形化的,需要批量,就嘗試代碼生成,本文嘗試代碼調用多模態AI,阿里通義有免費額度,作為練手應該挺好,如果以后選其他的,技術也是相通的。…