Java 最常見的 208 道面試題:第一模塊答案
Java 最常見的 208 道面試題:第二模塊答案
Java 最常見的 208 道面試題:第三模塊答案
Java 最常見的 208 道面試題:第四模塊和第五模塊答案
Java 最常見的 208 道面試題:第六模塊答案
Java 最常見的 208 道面試題:第七模塊答案
Java 最常見的 208 道面試題:第八模塊答案
Java 最常見的 208 道面試題:第九模塊和第十模塊答案
Java 最常見的 208 道面試題:第十一模塊答案
Java 最常見的 208 道面試題:第十二模塊答案
Java 最常見的 208 道面試題:第十三模塊答案
Java 最常見的 208 道面試題:第十四模塊答案
Java 最常見的 208 道面試題:第十五模塊答案
Java 最常見的 208 道面試題:第十六模塊答案
Java 最常見的 208 道面試題:第十七模塊答案
Java 最常見的 208 道面試題:第十八模塊答案
Java 最常見的 208 道面試題:第十九模塊答案
大家好,歡迎來到我的博客!今天我要為大家分享的是關于Java基礎面試題(經典)的內容。在準備面試之前,了解一些常見的面試題是非常重要的。這些問題考察了你對Java編程語言的基本理解和掌握情況,對于未來在實際工作中能否運用Java來解決問題起到了很好的檢驗作用。
Java基礎面試題(經典)是指那些在Java編程語言的學習和應用過程中廣泛問及的經典問題。這些問題涵蓋了Java基礎知識、語法、面向對象編程、集合框架、異常處理、多線程等方面。掌握了Java基礎面試題(經典),你可以更好地理解和運用Java編程語言。
在求職過程中,掌握Java基礎面試題(經典)有助于提升你的競爭力。很多招聘者在面試中會問及一些經典的Java基礎問題,這些問題旨在考察你對Java核心知識的掌握程度。通過事先準備并熟悉這些問題,你可以在面試中展現(xiàn)自己的知識水平,給招聘者留下深刻的印象,提高你被錄用的機會。
接下來,我將為大家提供一些Java基礎面試題(經典)的示例,希望能幫助大家更好地準備面試。
Java是一種面向對象編程語言,面向對象編程是一種軟件開發(fā)方法,通過將實際世界中的事物抽象成對象來解決問題。在Java中,對象是根據類(Class)定義的,類是對象的模板,用于描述對象的屬性和行為。
在Java中,字符串是不可變的,也就是說一旦創(chuàng)建了一個字符串對象,就不能再改變它。當對字符串進行修改時,實際上是創(chuàng)建了一個新的字符串對象,原始字符串對象并沒有改變。
靜態(tài)方法是屬于類的方法,可以直接通過類名調用,而不需要創(chuàng)建類的實例。靜態(tài)方法中不能直接訪問類的非靜態(tài)成員,只能訪問靜態(tài)成員。實例方法是屬于類的實例的方法,需要通過創(chuàng)建類的實例來調用,可以訪問類的靜態(tài)和非靜態(tài)成員。
繼承是面向對象編程中的一個重要概念,它允許一個類(稱為子類或派生類)繼承另一個類(稱為父類或基類)的屬性和方法。在Java中,可以通過使用關鍵字“extends”來實現(xiàn)繼承。
多態(tài)性是指一個對象在不同情況下具有不同的表現(xiàn)形式或表現(xiàn)行為的能力。在Java中,多態(tài)性可以通過繼承和接口來實現(xiàn)。當子類繼承父類或實現(xiàn)接口時,可以以父類或接口類型引用子類對象,實現(xiàn)編譯時的多態(tài)性。
Java中的異常處理機制可以幫助我們更好地處理代碼中可能出現(xiàn)的錯誤和異常情況。它通過使用try-catch語句塊來捕獲和處理可能發(fā)生的異常,從而保證程序的正常執(zhí)行。
Java中的集合框架提供了一組實現(xiàn)了常用數(shù)據結構的類和接口。常見的集合框架包括List(列表)、Set(集合)、Map(映射)等。它們分別提供了不同的數(shù)據存儲和訪問方式,適用于不同的場景和需求。
線程是程序執(zhí)行的最小單元,它代表了一個獨立的執(zhí)行路徑。在Java中,可以通過繼承Thread類或實現(xiàn)Runnable接口來創(chuàng)建線程。線程的創(chuàng)建和控制可以使用Thread類提供的方法來實現(xiàn),如start()、sleep()、join()等。
通過準備和熟悉Java基礎面試題(經典),你可以增加在Java面試中的競爭力,并展示自己的知識水平和技能。我希望本篇博客能夠對你在面試中的準備有所幫助。
如果你對Java基礎面試題(經典)有任何疑問或想進一步討論,歡迎在評論區(qū)留言。謝謝大家的閱讀!
java入門精講教程,我推薦你學習百戰(zhàn)程序員的java300級,這個課程他是從零基礎開始講的,然后講的很系統(tǒng),也很全面,特別細,而適合我們初學者學習,我們當時是老師推薦學習的. 我們同學好多都是看的這個資料入門的呢,去百戰(zhàn)程序員官網就可以領到,而且是免費的喲
查看路徑
顯示當前目錄的路徑
查看命令的可執(zhí)行文件所在路徑, Linux 下,每一條命令其實都對應一個可執(zhí)行程序,在終端中輸入命令,按回車的時候,就是執(zhí)行了對應的那個程序, which 命令本身對應的程序也存在于 Linux 中。
總的來說一個命令就是一個可執(zhí)行程序。
瀏覽和切換目錄
列出文件和目錄,它是 Linux 最常用的命令之一。
【常用參數(shù)】
cd 是英語 change directory 的縮寫,表示切換目錄。
cd / --> 跳轉到根目錄
cd ~ --> 跳轉到家目錄
cd .. --> 跳轉到上級目錄
cd ./home --> 跳轉到當前目錄的home目錄下
cd /home/lion --> 跳轉到根目錄下的home目錄下的lion目錄
cd --> 不添加任何參數(shù),也是回到家目錄
[注意] 輸入cd /ho + 單次 tab 鍵會自動補全路徑 + 兩次 tab 鍵會列出所有可能的目錄列表。
列舉目錄大小信息。
【常用參數(shù)】
一次性顯示文件所有內容,更適合查看小的文件。
cat cloud-init.log
【常用參數(shù)】
分頁顯示文件內容,更適合查看大的文件。
less cloud-init.log
【快捷操作】
顯示文件的開頭幾行(默認是10行)
head cloud-init.log
【參數(shù)】
顯示文件的結尾幾行(默認是10行)
tail cloud-init.log復制代碼
【參數(shù)】
創(chuàng)建一個文件
touch new_file復制代碼
創(chuàng)建一個目錄
mkdir new_folder復制代碼
【常用參數(shù)】
文件的復制和移動
拷貝文件和目錄
cp file file_copy --> file 是目標文件,file_copy 是拷貝出來的文件cp file one --> 把 file 文件拷貝到 one 目錄下,并且文件名依然為 file
cp file one/file_copy --> 把 file 文件拷貝到 one 目錄下,文件名為file_copy
cp *.txt folder --> 把當前目錄下所有 txt 文件拷貝到 folder 目錄下
【常用參數(shù)】
移動(重命名)文件或目錄,與cp命令用法相似。
mv file one --> 將 file 文件移動到 one 目錄下
mv new_folder one --> 將 new_folder 文件夾移動到one目錄下mv *.txt folder --> 把當前目錄下所有 txt 文件移動到 folder 目錄下mv file new_file --> file 文件重命名為 new_file
文件的刪除和鏈接
刪除文件和目錄,由于 Linux 下沒有回收站,一旦刪除非常難恢復,因此需要謹慎操作
rm new_file --> 刪除 new_file 文件
rm f1 f2 f3 --> 同時刪除 f1 f2 f3 3個文件
【常用參數(shù)】
英文 Link 的縮寫,表示創(chuàng)建鏈接。
學習創(chuàng)建鏈接之前,首先要理解鏈接是什么,我們先來看看 Linux 的文件是如何存儲的:
Linux 文件的存儲方式分為3個部分,文件名、文件內容以及權限,其中文件名的列表是存儲在硬盤的其它地方和文件內容是分開存放的,每個文件名通過 inode 標識綁定到文件內容。
Linux 下有兩種鏈接類型:硬鏈接和軟鏈接。
使鏈接的兩個文件共享同樣文件內容,就是同樣的 inode ,一旦文件1和文件2之間有了硬鏈接,那么修改任何一個文件,修改的都是同一塊內容,它的缺點是,只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的(其實也可以,但比較復雜)而軟鏈接都可以,因此軟鏈接使用更加廣泛。
這個部分暫時不展開。
用戶
Linux 是一個多用戶的操作系統(tǒng)。在 Linux 中,理論上來說,我們可以創(chuàng)建無數(shù)個用戶,但是這些用戶是被劃分到不同的群組里面的,有一個用戶,名叫 root ,是一個很特殊的用戶,它是超級用戶,擁有最高權限。
以 root 身份運行命令
這兩個命令需要 root 用戶權限
刪除用戶,需要 root 用戶權限
切換用戶,需要 root 用戶權限
群組的管理
Linux 中每個用戶都屬于一個特定的群組,如果你不設置用戶的群組,默認會創(chuàng)建一個和它的用戶名一樣的群組,并且把用戶劃歸到這個群組。
創(chuàng)建群組,用法和 useradd 類似
刪除一個已存在的群組
查看用戶所在群組
用于修改用戶的賬戶。
【常用參數(shù)】
用于修改文件的群組。
改變文件的所有者,需要 root 身份才能運行。
【常用參數(shù)】
文件權限管理
修改訪問權限。
【常用參數(shù)】
其中 drwxr-xr-x 表示文件或目錄的權限。讓我們一起來解讀它具體代表什么?
現(xiàn)在再來理解這句權限 drwxr-xr-x 的意思:
現(xiàn)在理解了權限,我們使用 chmod 來嘗試修改權限。chmod 它不需要是 root 用戶才能運行的,只要你是此文件所有者,就可以用 chmod 來修改文件的訪問權限。
chmod 640 hello.c
# 分析
6 = 4 + 2 + 0 表示所有者具有 rw 權限
4 = 4 + 0 + 0 表示群組用戶具有 r 權限
0 = 0 + 0 + 0 表示其它用戶沒有權限
對應文字權限為:-rw-r-----
chmod u+rx file --> 文件file的所有者增加讀和運行的權限
chmod g+r file --> 文件file的群組用戶增加讀的權限
chmod o-r file--> 文件file的其它用戶移除讀的權限
chmod g+r file --> 文件file的群組用戶增加讀的權限,其它用戶移除讀的權限
chmod go-r file --> 文件file的群組和其他用戶移除讀的權限
chmod +x file --> 文件file的所有用戶增加運行的權限
chmod u=rwx,g=r,o=- file --> 文件file的所有者分配讀寫和執(zhí)行的權限,群組其它用戶分配讀的權限,其他用戶沒有任何權限
搜索包含關鍵字的所有文件和目錄。后接需要查找的文件名,也可以用正則表達式。
yum -y install mlocate --> 安裝包updatedb --> 更新數(shù)據庫復制代碼locate file.txtlocate fil*.txt
[注意] locate 命令會去文件數(shù)據庫中查找命令,而不是全磁盤查找,因此剛創(chuàng)建的文件并不會更新到數(shù)據庫中,所以無法被查找到,可以執(zhí)行 updatedb 命令去更新數(shù)據庫。
find
用于查找文件,它會去遍歷你的實際硬盤進行查找,而且它允許我們對每個找到的文件進行后續(xù)操作,功能非常強大。
find <何處> <何物> <做什么>
find -name "file.txt" --> 當前目錄以及子目錄下通過名稱查找文件
find . -name "syslog" --> 當前目錄以及子目錄下通過名稱查找文件
find / -name "syslog" --> 整個硬盤下查找syslog
find /var/log -name "syslog" --> 在指定的目錄/var/log下查找syslog文件find /var/log -name "syslog*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有
find /var/log -name "*syslog*" --> 查找包含syslog的文件
[注意] find 命令只會查找完全符合 "何物" 字符串的文件,而 locate 會查找所有包含關鍵字的文件。
find /var -size +10M --> /var 目錄下查找文件大小超過 10M 的文件
find /var -size -50k --> /var 目錄下查找文件大小小于 50k 的文件
find /var -size +1G --> /var 目錄下查找文件大小查過 1G 的文件
find /var -size 1M --> /var 目錄下查找文件大小等于 1M 的文件
find -name "*.txt" -atime -7
--> 近 7天內訪問過的.txt結尾的文件
find . -name "file" -type f
--> 只查找當前目錄下的file文件
find . -name "file" -type d
--> 只查找當前目錄下的file目錄
軟件倉庫
Linux 下軟件是以包的形式存在,一個軟件包其實就是軟件的所有文件的壓縮包,是二進制的形式,包含了安裝軟件的所有指令。Red Hat 家族的軟件包后綴名一般為 .rpm ,Debian 家族的軟件包后綴是 .deb 。
Linux 的包都存在一個倉庫,叫做軟件倉庫,它可以使用 yum 來管理軟件包, yum 是 CentOS 中默認的包管理工具,適用于 Red Hat 一族??梢岳斫獬?Node.js 的 npm 。
yum 常用命令
grep
全局搜索一個正則表達式,并且打印到屏幕。簡單來說就是,在文件中查找關鍵字,并顯示關鍵字所在行。
grep text file # text代表要搜索的文本,file代表供搜索的文件
對文件的行進行排序。
sort name.txt # 對name.txt文件進行排序
為了演示方便,我們首先創(chuàng)建一個文件 name.txt ,放入以下內容:
ChristopherShawnTedRockNoahZacharyBella
執(zhí)行 sort name.txt 命令,會對文本內容進行排序。
word count 的縮寫,用于文件的統(tǒng)計。它可以統(tǒng)計單詞數(shù)目、行數(shù)、字符數(shù),字節(jié)數(shù)等。
wc name.txt # 統(tǒng)計name.txt
[root@lion ~]# wc name.txt 13 13 91 name.txt
刪除文件中的重復內容。
uniq name.txt # 去除name.txt重復的行數(shù),并打印到屏幕上
【注意】它只能去除連續(xù)重復的行數(shù)。
剪切文件的一部分內容。
cut -c 2-4 name.txt # 剪切每一行第二到第四個字符
在 Linux 中一個命令的去向可以有3個地方:終端、文件、作為另外一個命令的入參。
命令一般都是通過鍵盤輸入,然后輸出到終端、文件等地方,它的標準用語是 stdin 、 stdout 以及 stderr 。
把本來要顯示在終端的命令結果,輸送到別的地方(到文件中或者作為其他命令的輸入)。
> 表示重定向到新的文件, cut -d , -f 1 notes.csv > name.csv ,它表示通過逗號剪切notes.csv 文件(剪切完有3個部分)獲取第一個部分,重定向到 name.csv 文件。
我們來看一個具體示例,學習它的使用,假設我們有一個文件 notes.csv ,文件內容如下:
Mark1,951/100,很不錯1Mark2,952/100,很不錯2Mark3,
953/100,很不錯3Mark4,954/100,很不錯4Mark5,955/100,很不錯5Mark6,956/100,很不錯6
執(zhí)行命令:cut -d , -f 1 notes.csv > name.csv 最后輸出如下內容:
Mark1Mark2Mark3Mark4Mark5Mark6
【注意】使用 > 要注意,如果輸出的文件不存在它會新建一個,如果輸出的文件已經存在,則會覆蓋。因此執(zhí)行這個操作要非常小心,以免覆蓋其它重要文件。
表示重定向到文件末尾,因此它不會像 > 命令這么危險,它是追加到文件的末尾(當然如果文件不存在,也會被創(chuàng)建)。
再次執(zhí)行 cut -d , -f 1 notes.csv >> name.csv ,則會把名字追加到 name.csv 里面。
Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6
我們平時讀的 log 日志文件其實都是用這個命令輸出的。
標準錯誤輸出
cat not_exist_file.csv > res.txt 2> errors.log
標準錯誤輸出(追加到文件末尾)同 >> 相似。
< 符號用于指定命令的輸入。
cat < name.csv # 指定命令的輸入為 name.csv
雖然它的運行結果與 cat name.csv 一樣,但是它們的原理卻完全不同。
將鍵盤的輸入重定向為某個命令的輸入。
sort -n << END # 輸入這個命令之后,按下回車,終端就進入鍵盤輸入模式,其中END為結束命令(這個可以自定義)wc -m << END # 統(tǒng)計輸入的單詞復
把兩個命令連起來使用,一個命令的輸出作為另外一個命令的輸入,英文是 pipeline ,可以想象一個個水管連接起來,管道算是重定向流的一種。
舉幾個實際用法案例:
cut -d , -f 1 name.csv | sort > sorted_name.txt
# 第一步獲取到的 name 列表,通過管道符再進行排序,最后輸出到sorted_name.txt
du | sort -nr | head
# du 表示列舉目錄大小信息# sort 進行排序,-n 表示按數(shù)字排序,-r 表示倒序# head 前10行文件
grep log -Ir /var/log | cut -d : -f 1 | sort | uniq
# grep log -Ir /var/log 表示在log文件夾下搜索 /var/log 文本,-r 表示遞歸,-I 用于排除二進制文件# cut -d : -f 1 表示通過冒號進行剪切,獲取剪切的第一部分# sort 進行排序# uniq 進行去重復制代碼
在 Windows 中通過 Ctrl + Alt + Delete 快捷鍵查看軟件進程。
幫助我們快速了解系統(tǒng)中目前有哪些用戶登錄著,以及他們在干什么。
用于顯示當前系統(tǒng)中的進程, ps 命令顯示的進程列表不會隨時間而更新,是靜態(tài)的,是運行 ps 命令那個時刻的狀態(tài)或者說是一個進程快照。
獲取進程的動態(tài)列表。
結束一個進程, kill + PID 。
主要是切換進程的狀態(tài)。我們先了解下 Linux 下進程的五種狀態(tài):
默認情況下,用戶創(chuàng)建的進程都是前臺進程,前臺進程從鍵盤讀取數(shù)據,并把處理結果輸出到顯示器。例如運行 top 命令,這就是一個一直運行的前臺進程。
后臺進程的優(yōu)點是不必等待程序運行結束,就可以輸入其它命令。在需要執(zhí)行的命令后面添加& 符號,就表示啟動一個后臺進程。
啟動后臺進程,它的缺點是后臺進程與終端相關聯(lián),一旦關閉終端,進程就自動結束了。
cp name.csv name-copy.csv &
使進程不受掛斷(關閉終端等動作)的影響。
nohup cp name.csv name-copy.csv
nohup 命令也可以和 & 結合使用。
nohup cp name.csv name-copy.csv &
使一個"后臺暫停運行"的進程,狀態(tài)改為"后臺運行"。
顯示當前終端后臺進程狀態(tài)。
fg 使進程轉為前臺運行,用法和 bg 命令類似。
我們用一張圖來表示前后臺進程切換:
我們可以使程序在后臺運行,成為后臺進程,這樣在當前終端中我們就可以做其他事情了,而不必等待此進程運行結束。
我們常常使用 tar 將多個文件歸檔為一個總的文件,稱為 archive 。然后用 gzip 或 bzip2 命令將 archive 壓縮為更小的文件。
創(chuàng)建一個 tar 歸檔。
tar -cvf sort.tar sort/
# 將sort文件夾歸檔為sort.tar
tar -cvf archive.tar file1 file2 file3
# 將 file1 file2 file3 歸檔為archive.tar復制代碼
"壓縮/解壓"歸檔,默認用 gzip 命令,壓縮后的文件后綴名為 .tar.gz 。
gzip archive.tar # 壓縮gunzip archive.tar.gz # 解壓
可以用 tar 命令同時完成歸檔和壓縮的操作,就是給 tar 命令多加一個選項參數(shù),使之完成歸檔操作后,還是調用 gzip 或 bzip2 命令來完成壓縮操作。
tar -zcvf archive.tar.gz archive/ # 將archive文件夾歸檔并壓縮
tar -zxvf archive.tar.gz # 將archive.tar.gz歸檔壓縮文件解壓
之前講過使用 cat less more 可以查看文件內容,但是壓縮文件的內容是不能使用這些命令進行查看的,而要使用 zcat、zless、zmore 進行查看。
zcat archive.tar.gz
"壓縮/解壓" zip 文件( zip 壓縮文件一般來自 windows 操作系統(tǒng))。
# Red Hat 一族中的安裝方式y(tǒng)um install zip yum install unzip 復制代碼
unzip archive.zip
# 解壓 .zip 文件
unzip -l archive.zip
# 不解開 .zip 文件,只看其中內容
zip -r sort.zip sort/
# 將sort文件夾壓縮為 sort.zip,其中-r表示遞歸
簡單來說,編譯就是將程序的源代碼轉換成可執(zhí)行文件的過程。大多數(shù) Linux 的程序都是開放源碼的,可以編譯成適合我們的電腦和操縱系統(tǒng)屬性的可執(zhí)行文件。
基本步驟如下:
我們來編譯安裝 htop 軟件,首先在它的官網下載源碼:http://bintray.com/htop/source…[1]
下載好的源碼在本機電腦上使用如下命令同步到服務器上:
scp 文件名 用戶名@服務器ip:目標路徑
scp ~/Desktop/htop-3.0.0.tar.gz root@121.42.11.34:.
也可以使用 wegt 進行下載:
wegt+下載地址
wegt https://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz
tar -zxvf htop-3.0.0.tar.gz
# 解壓cd htop-3.0.0 # 進入目錄
執(zhí)行 ./configure ,它會分析你的電腦去確認編譯所需的工具是否都已經安裝了。
執(zhí)行 make 命令
執(zhí)行 make install 命令,安裝完成后執(zhí)行 ls /usr/local/bin/ 查看是否有 htop 命令。如果有就可以執(zhí)行 htop 命令查看系統(tǒng)進程了。
查看 ip 網絡相關信息,如果命令不存在的話, 執(zhí)行命令 yum install net-tools 安裝。
參數(shù)解析:
ip 地址和主機名的互相轉換。
通過非對稱加密以及對稱加密的方式(同 HTTPS 安全連接原理相似)連接到遠端服務器。
config 文件可以***h ,方便批量管理多個 ssh 連接。
配置文件分為以下幾種:
配置當前用戶的 config :
# 創(chuàng)建config
vim ~/.ssh/config
# 填寫一下內容
Host lion # 別名 HostName 172.x.x.x # ip 地址 Port 22 # 端口 User root # 用戶
這樣配置完成后,下次登錄時,可以這樣登錄 ssh lion 會自動識別為 root 用戶。
[注意] 這段配置不是在服務器上,而是你自己的機器上,它僅僅是設置了一個別名。
可以使我們直接從終端控制臺下載文件,只需要給出文件的HTTP或FTP地址。
它是 Secure Copy 的縮寫,表示安全拷貝。scp 可以使我們通過網絡,把文件從一臺電腦拷貝到另一臺電腦。
scp 是基于 ssh 的原理來運作的, ssh 會在兩臺通過網絡連接的電腦之間創(chuàng)建一條安全通信的管道, scp 就利用這條管道安全地拷貝文件。
scp source_file destination_file
# source_file 表示源文件,destination_file 表示目標文件
其中 source_file 和 destination_file 都可以這樣表示:user@ip:file_name , user 是登錄名, ip 是域名或 ip 地址。file_name 是文件路徑。
scp root@192.168.1.5:/root/file.txt file.txt # 表示把遠程電腦上的 file.txt 文件拷貝到本機
scp file.txt root@192.168.1.5:/root # 表示把我的電腦中當前文件夾下的 file.txt 文件拷貝到遠程電腦
rsync 命令主要用于遠程同步文件。它可以同步兩個目錄,不管它們是否處于同一臺電腦。它應該是最常用于"增量備份"的命令了。它就是智能版的 scp 命令。
yum install rsync復制代碼
rsync -arv Images/ backups/
# 將Images 目錄下的所有文件備份到 backups 目錄下
rsync -arv Images/ root@192.x.x.x:backups/
# 同步到服務器的backups目錄下
默認地, rsync 在同步時并不會刪除目標目錄的文件,例如你在源目錄中刪除一個文件,但是用 rsync 同步時,它并不會刪除同步目錄中的相同文件。如果向刪除也可以這么做:rsync -arv --delete Images/ backups/ 。
關閉系統(tǒng),需要 root 身份。
重啟系統(tǒng),需要 root 身份。
reboot
直接運行即可關機,不需要 root 身份。
Vim 是從 vi 發(fā)展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs 并列成為類 Unix 系統(tǒng)用戶最喜歡的編輯器。
也成為正常模式,這是 Vim 的默認模式,每次運行 Vim 程序的時候,就會進入這個模式。
例如執(zhí)行 vim name.txt 則會進入交互模式。
交互模式特征:
這個模式是我們熟悉的文本編輯器的模式,就是可以輸入任何你想輸入的內容。進入這個模式有幾種方法,最常用的方法是按字母鍵 i ( i、I、a、A、o、O 都可以進入插入模式,只是所處的位置不同),退出這種模式,只需要按下 Esc 鍵。
命令模式也稱為底線命令模式,這個模式下可以運行一些命令例如"退出","保存",等動作。
也可以用這個模式來激活一些 Vim 配置,例如語法高亮,顯示行號,等。甚至還可以發(fā)送一些命令給終端命令行,例如 ls、cp 。
為了進入命令模式,首先要進入交互模式,再按下冒號鍵。
用一張圖表示三種模式如何切換:
基本操作
在終端命令行中輸入 vim 回車后 Vim 就會被運行起來,也可以用 Vim 來打開一個文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么會被創(chuàng)建。
進入文件之后,此時處于交互模式,可以通過輸入 i 進入插入模式
在 Vim 的交互模式下,我們可以在文本中移動光標。
當然也可以使用四個方向鍵進行移動,效果是一樣的。
在交互模式下,按字母鍵 w 可以一個單詞一個單詞的移動。
在交互模式下,按下冒號鍵 : 進入命令模式,再按下 q 鍵,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 會顯示一個紅字標明錯誤信息。此時我們有兩個選擇:
在交互模式下,將光標定位到一個你想要刪除的字符上,按下字母鍵 x 你會發(fā)現(xiàn)這個字符被刪除了。
也可以一次性刪除多個字符,只需要在按 x 鍵之前輸入數(shù)字即可。
如果之前用 dd 或者 yy 剪切復制過來的,可以使用 p 來粘貼。同樣也可以使用 數(shù)字+p來表示復制多次。
在交互模式下,將光標置于想要替換的字符上。按下 r 鍵,接著輸入你要替換的字符即可。
如果要撤銷最近的修改,只需要按下 u 鍵,如果想要撤銷最近四次修改,可以按下4,再按下 u 。
取消撤銷,也就是重做之前的修改使用 ctrl + r 。
Vim 編輯的文件中,每一行都有一個行號,行號從1開始,逐一遞增。
行號默認是不顯示,如果需要它顯示的話,可以進入命令模式,然后輸入 set nu ,如果要隱藏行號的話,使用 set nonu 。
處于交互模式下,按下 / 鍵,那么就進入查找模式,輸入你要查找的字符串,然后按下回車。光標就會跳轉到文件中下一個查找到的匹配處。如果字符串不存在,那么會顯示 "pattern not found" 。
[注意] 用斜杠來進行的查找是從當前光標處開始向文件尾搜索,如果你要從當前光標處開始,向文件頭搜索則使用 ? ,當然也可以先按下 gg 跳轉到第一行在進行全文搜索。
替換光標所在行第一個匹配的字符串:
# 語法:s/舊字符串/新字符串# 實例:s/one/two
替換光標所在行所有舊字符串為新字符串:
# 語法:s/舊字符串/新字符串/g
替換第幾行到第幾行中所有字符串:
# 語法:n,m s/舊字符串/新字符串/g
# 實例:2,4 s/one/two/g
最常用的就是全文替換了:
# 語法:%s/舊字符串/新字符串/g
可以用冒號 +r ( :r ) 實現(xiàn)在光標處插入一個文件的內容。
:r filename # 可以用Tab鍵來自動補全另外一個文件的路徑
關于軟件測試,要掌握的知識和技能有很多。 秋千學姐分類梳理了 500個 軟件測試知識體系中的重點問題答案,對于工作中的技能提升和求職面試都有很大幫助,
很實操很干貨,如果你需要,我發(fā)給你
包含功能測試、接口測試、自動化測試、數(shù)據庫、Linux、計算機網絡、抓包、算法、Python等內容
另外送軟件測試各類電子書籍
面試或者工作中碰到的軟件測試問題,歡迎在知乎、公眾號、小紅書提問, 秋千學姐 幫你解答
軟件測試|推薦閱讀:
秋千說軟件測試:想拿30k軟件測試offer,看大廠365道軟件測試常問面試真題匯總
秋千說軟件測試:2022最火的軟件測試面試_計算機網絡真題答案-通過率百分之百
秋千說軟件測試:2022軟件測試20k的offer,自動化測試面試題答案分享一波
秋千說軟件測試:2022軟件測試拿了20k的offer,Python面試題答案分享一波
秋千說軟件測試:2022軟件測試20k的offer,線程進程協(xié)程面試題答案分享一波
秋千說軟件測試:2022軟件測試拿了20k的offer,計算機網絡面試題答案分享一波
秋千說軟件測試:2022軟件測試20k的offer,計算機網絡面試題答案分享一波
職場經驗|推薦閱讀:
秋千說軟件測試:從年薪200萬領導身上學到的職場干貨,彎道超車
秋千說軟件測試:裁員最先裁哪類員工?看紅樓夢檢抄大觀園就知道了
面試跳槽|推薦閱讀:
秋千說軟件測試:就業(yè)不景氣,對抗焦慮和迷茫,只需要做對這1點
秋千說軟件測試:為什么你的面試總是掛?面試官最討厭的這些雷區(qū)別踩
四大名著 編程思想 effective java 核心技術卷一二
會計面試的題目大致分為普遍性的問題以及專業(yè)性的問題,主要有以下結論經典試題:
1、一般納稅人可抵扣票證有哪些?納稅申報的流程如何?
2、客戶扣款(已開具發(fā)票)如何進行會計處理?需要附哪些原始單據?
3、年終獎是如何計算繳納個人所得稅的?
4、財政年報和匯算清繳報表口徑有什么差異?
5、公司購買裝修材料用來裝修租用的辦公用房,如何進行會計處理?
6、公司開辦費如何進行會計核算?所得稅清繳時如何進行調整?
7、你為什么離開以前的公司?
8、你目前的工作是什么?說說你工作的流程。
9、你覺得費用支出如何處理?(一般為服務行業(yè))
10、公司成本如何核算?(一般為制造企業(yè))
11、請你談談畢業(yè)之后的工作經歷。
12、你現(xiàn)在或最近所做的工作,其職責是什么?你擔任什么職務?
13、你認為你在工作中的成就是什么?
14、在你主管的部門中,遇到過什么困難?你是如何處理或應付過去的?
15、請談一下你在企業(yè)中職務升遷和收入變化情況。
俄羅斯方塊(Tetris)是經典的益智游戲,幾乎是世界上最有影響力的益智游戲之一,游戲本身也很簡單,只要不斷消減掉落的方塊就可以了。這個游戲被模仿了很多個版本,我這里的是EA出的瘋狂俄羅斯方塊(Tetris Mania)。 超級泡泡龍(Super Bubble Bobble)是Taito公司開發(fā)的游戲,主角是兩只綠色和藍色的小恐龍,通過吐出泡泡來消減屏幕上的彩球,游戲本身簡單易學、妙趣橫生,女孩子玩起來會上癮的?! 〕夞R里奧(Super Mario Bros)是任天堂公司開發(fā)的著名橫版過關游戲,是電子游戲歷史上銷量最大的系列游戲之一,早在任天堂的紅白機時代就名聲在外了,這個游戲幾乎移植到了所有的任天堂游戲機,也包括電腦和手機。 吃豆(Pac-Man)是Namco公司開發(fā)的一個經典游戲,玩家控制游戲的主人公黃色小精靈吃掉藏在迷宮內所有的豆子,并且不能被“幽靈”抓到?! ∝澇陨?Retro Snaker)是諾基亞手機上的一個元老級游戲,這個游戲短小精悍,很具可玩性,特別適合在手機上玩。據稱,已經有超過十億人玩過這個游戲?! °@石情迷(Bejeweled)是一個很好玩的益智游戲,有點像“對對碰”,游戲規(guī)則很簡單,移動相鄰的兩個鉆石,使任一排產生有三個或以上的相同鉆石,即消去,上面的鉆石靠重力落下?! ∽娆?Zuma)是一款休閑益智游戲,玩法很像QQ龍珠,將中間吐出來的珠子向著周圍連環(huán)滾出的同色珠子射打,夠三個就能炸裂消除,簡單有趣。 炸彈人(Bomberman)是Hudson公司開發(fā)的一款基于迷宮的游戲,游戲主角炸彈人是一個機器人,基本操作是放置炸彈,以十字型的方式爆炸,來炸死敵人,也可以炸死自己,還有些增強威力與技能道具增加了游戲的可玩性?! 〔ㄋ雇踝?Prince of Persia)是上世紀九十年代的一個經典游戲,我以前在DOS上玩過的最早的游戲之一,可惜游戲續(xù)集一代不如一代,Gameloft將波斯王子一代進行了重新開發(fā)制作,命名為Prince of Persia Classic,并支持手機,其在手機上的效果很不錯?! ∧M人生(The Sims)是Electronic Arts開發(fā)的一款以模擬普通人生活為主題的游戲,玩家可以操控模擬人物進行日常生活、社區(qū)交流以及建造房屋。在一個模擬的世界中,仿造真實的情境,控制生理和精神的需求。手機版的模擬人生簡化了原始電腦游戲的一些因素,使得其可以在手機上方便的操作。
在準備面試過程中,了解并掌握常見的Java面試題是非常重要的。這些問題涵蓋了Java編程語言的各個方面,包括基礎知識、核心概念以及高級特性。通過熟悉這些問題和對應的解答,可以幫助面試者更好地展現(xiàn)自己的技能和經驗。
在Java面試中,基礎知識是最為基礎和關鍵的部分。以下是一些常見的基礎問題:
這些問題涉及到Java的基本概念和語法,面試者應當能夠清晰地解答并且展示出對Java的理解。
除了基礎知識,面試者還需要了解Java的核心概念,例如:
這些問題考察了面試者對于Java面向對象編程范式的理解以及其在實際開發(fā)中的應用。
在掌握了Java的基礎知識和核心概念之后,面試者還需要了解Java的高級特性,如:
這些問題考察了面試者對于Java編程語言的深入理解以及其在實際項目中的應用經驗。
除了具備扎實的技術知識外,面試者還需要掌握一些面試技巧,例如:
這些技巧可以幫助面試者在面試過程中更好地展現(xiàn)自己,吸引面試官的注意并獲得成功。
通過掌握Java的基礎知識、核心概念和高級特性,并且掌握一定的面試技巧,面試者將能夠在面試中展現(xiàn)出自己的優(yōu)勢,獲得更多機會。不斷學習和提升自己在Java編程領域的技能,是每個Java開發(fā)者邁向成功的關鍵。
希望以上Java面試題分享對您有所幫助,預祝您在未來的面試中取得成功!
在Java面向對象編程中,選擇結構是一種常見的控制流語句,用于根據不同的條件執(zhí)行不同的代碼塊。Java switch語句是一種有效的方法,用于在給定一系列值的情況下執(zhí)行不同的操作。在這篇文章中,我們將深入研究Java switch語句,并提供一些常見的面試題示例,幫助您更好地理解和掌握這一概念。
Java switch語句是一種用于根據表達式的值選擇要執(zhí)行的代碼塊的多路分支語句。它允許我們根據不同的條件執(zhí)行不同的操作,比起使用一連串的if-else語句,Java switch語句通常更簡潔和易讀。
下面是Java switch語句的基本語法:
switch (expression) { case value1: // 代碼塊1 break; case value2: // 代碼塊2 break; ... default: // 默認代碼塊 }在這個語法中,expression
通常是一個整數(shù)值或枚舉,case
關鍵字后面跟著一個值,如果表達式的值與某個case
后面的值匹配,則執(zhí)行相應的代碼塊。如果沒有匹配的case
,則執(zhí)行default
代碼塊(可選)。
讓我們通過一個簡單的示例來說明Java switch語句的工作原理:
int day = 3; String dayName; switch (day) { case 1: dayName = "Monday"; break; case 2: dayName = "Tuesday"; break; case 3: dayName = "Wednesday"; break; // 其他case default: dayName = "Invalid day"; } System.out.println("Today is " + dayName);
在這個例子中,根據day
的值,將會輸出Today is Wednesday
。
下面是一些常見的Java switch面試題示例,幫助您練習和加深對switch
語句的理解:
Java switch語句是一種有用的控制流結構,可以讓我們根據不同的條件執(zhí)行相應的代碼塊。通過本文的學習,您應該能更好地掌握和運用Java switch語句,同時也能在面試中更加游刃有余地回答與之相關的問題。希望這些內容對您有所幫助,謝謝閱讀!
Java 直播 是Java領域中一個很受歡迎的話題,特別是在學習和分享面試題方面。在技術領域,面試題一直是評估一個人技術水平的重要指標,因此掌握一些常見的Java面試題對于求職者來說是至關重要的。
在Java直播中,經常會有專家講解一些高級的Java知識,分享一些實用的技巧以及解答觀眾提出的問題。有時候也會邀請一些技術大牛來進行深度剖析,讓大家從中受益。而面試題則是不可或缺的一部分,通過面試題的討論,不僅可以考驗自己的技術水平,還可以不斷學習和提升。
隨著互聯(lián)網的發(fā)展,Java作為一門優(yōu)秀的編程語言,被廣泛應用于各個領域。因此,掌握Java的面試題是每個Java工程師必備的技能之一。在面試過程中,面試官通常會通過提問面試題的方式來了解面試者的基本功和應變能力,因此熟練掌握常見的Java面試題至關重要。
Java面試題可以分為基礎、中級和高級三個層次?;A面試題主要涉及Java語法、集合框架、多線程等基礎知識;中級面試題則會涉及到IO流、反射機制、異常處理等內容;高級面試題則會涉及到性能優(yōu)化、框架設計、并發(fā)編程等高級技術。
以上是一些常見的Java面試題示例,面試者可以通過學習和掌握這些面試題來提升自己的技術水平,更好地備戰(zhàn)面試。
總的來說,Java直播和面試題是Java學習者和從業(yè)者不容錯過的重要內容。通過參與Java直播,可以了解最新的技術動態(tài)和行業(yè)趨勢;通過學習面試題,可以提升自己的技術水平和應變能力。希望大家能夠在Java的學習和工作中有所收獲,不斷進步。