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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【2022最新Java面试宝典】—— Linux面试题(50道含答案)

發(fā)布時間:2023/12/10 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2022最新Java面试宝典】—— Linux面试题(50道含答案) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 一、Linux 概述
    • 1. 什么是Linux
    • 2. Windows和Linux的區(qū)別
    • 3. Unix和Linux有什么區(qū)別?
    • 4. 什么是 Linux 內(nèi)核?
    • 5. Linux的基本組件是什么?
    • 6. Linux 的體系結(jié)構(gòu)
    • 7. BASH和DOS之間的基本區(qū)別是什么?
    • 8. Linux 開機啟動過程?
    • 9. Linux系統(tǒng)缺省的運行級別?
    • 10. Linux 使用的進程間通信方式?
    • 11. Linux 有哪些系統(tǒng)日志文件?
    • 12. Linux系統(tǒng)安裝多個桌面環(huán)境有幫助嗎?
    • 13. 什么是交換空間?
    • 14. 什么是root帳戶
    • 15. 什么是LILO?
    • 16. 什么是BASH?
    • 17. 什么是CLI?
    • 18. 什么是GUI?
    • 19. 開源的優(yōu)勢是什么?
    • 20. GNU項目的重要性是什么?
  • 二、磁盤、目錄、文件
    • 21. 簡單 Linux 文件系統(tǒng)?
    • 22. Linux 的目錄結(jié)構(gòu)是怎樣的?
    • 23. 什么是 inode ?
    • 24. 什么是硬鏈接和軟鏈接?
    • 25. RAID 是什么?
  • 三、安全
    • 26. 一臺 Linux 系統(tǒng)初始化環(huán)境后需要做一些什么安全工作?
    • 27. 什么叫 CC 攻擊?什么叫 DDOS 攻擊?
    • 28. 什么是網(wǎng)站數(shù)據(jù)庫注入?
    • 29. Shell 腳本是什么?
  • 四、實戰(zhàn)
    • 30.如何選擇 Linux 操作系統(tǒng)版本?
    • 31. 如何規(guī)劃一臺 Linux 主機,步驟是怎樣?
    • 32. 請問當用戶反饋網(wǎng)站訪問慢,你會如何處理?
    • 33. Linux 性能調(diào)優(yōu)都有哪幾種方法?
    • 34. 基本命令

一、Linux 概述

1. 什么是Linux

  • Linux是一套免費使用和自由傳播的類似Unix操作系統(tǒng),一般的WEB項目都是部署都是放在Linux
    操作系統(tǒng)上面。 Linux是一個基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系
    統(tǒng)。它能運行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了
    Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。

2. Windows和Linux的區(qū)別

  • Windows是微軟開發(fā)的操作系統(tǒng),民用操作系統(tǒng),可用于娛樂、影音、上網(wǎng)。 Windows操作系統(tǒng)
    具有強大的日志記錄系統(tǒng)和強大的桌面應(yīng)用。好處是它可以幫我們實現(xiàn)非常多絢麗多彩的效果,可
    以非常方便去進行娛樂、影音、上網(wǎng)。
  • Linux的應(yīng)用相對單純很多,沒有什么絢麗多彩的效果,因此Linux的性能是非常出色的,可以完
    全針對機器的配置有針對性的優(yōu)化,
  • 簡單來說Windows適合普通用戶進行娛樂辦公使用,Linux適合軟件開發(fā)部署

3. Unix和Linux有什么區(qū)別?

  • Linux和Unix都是功能強大的操作系統(tǒng),都是應(yīng)用廣泛的服務(wù)器操作系統(tǒng),有很多相似之處,甚至
    有一部分人錯誤地認為Unix和Linux操作系統(tǒng)是一樣的,然而,事實并非如此,以下是兩者的區(qū)
    別。
  • 開源性
    Linux是一款開源操作系統(tǒng),不需要付費,即可使用;Unix是一款對源碼實行知識產(chǎn)權(quán)保護的
    傳統(tǒng)商業(yè)軟件,使用需要付費授權(quán)使用。
  • 跨平臺性
    Linux操作系統(tǒng)具有良好的跨平臺性能,可運行在多種硬件平臺上;Unix操作系統(tǒng)跨平臺性能
    較弱,大多需與硬件配套使用。
  • 可視化界面
    Linux除了進行命令行操作,還有窗體管理系統(tǒng);Unix只是命令行下的系統(tǒng)。
  • 硬件環(huán)境
    Linux操作系統(tǒng)對硬件的要求較低,安裝方法更易掌握;Unix對硬件要求比較苛刻,按照難度
    較大。
  • 用戶群體
    Linux的用戶群體很廣泛,個人和企業(yè)均可使用;Unix的用戶群體比較窄,多是安全性要求高
    的大型企業(yè)使用,如銀行、電信部門等,或者Unix硬件廠商使用,如Sun等。
    相比于Unix操作系統(tǒng),Linux操作系統(tǒng)更受廣大計算機愛好者的喜愛,主要原因是Linux操作
    系統(tǒng)具有Unix操作系統(tǒng)的全部功能,并且能夠在普通PC計算機上實現(xiàn)全部的Unix特性,開源
    免費的特性,更容易普及使用!
  • 4. 什么是 Linux 內(nèi)核?

    • Linux 系統(tǒng)的核心是內(nèi)核。內(nèi)核控制著計算機系統(tǒng)上的所有硬件和軟件,在必要時分配硬件,并根
      據(jù)需要執(zhí)行軟件。
  • 系統(tǒng)內(nèi)存管理
  • 應(yīng)用程序管理
  • 硬件設(shè)備管理
  • 文件系統(tǒng)管理
  • 5. Linux的基本組件是什么?

    • 就像任何其他典型的操作系統(tǒng)一樣,Linux擁有所有這些組件:內(nèi)核,shell和GUI,系統(tǒng)實用程序
      和應(yīng)用程序。Linux比其他操作系統(tǒng)更具優(yōu)勢的是每個方面都附帶其他功能,所有代碼都可以免費
      下載。

    6. Linux 的體系結(jié)構(gòu)

    • 從大的方面講,Linux 體系結(jié)構(gòu)可以分為兩塊:
    • 用戶空間(User Space) :用戶空間又包括用戶的應(yīng)用程序(User Applications)、C 庫(C Library) 。
    • 內(nèi)核空間(Kernel Space) :內(nèi)核空間又包括系統(tǒng)調(diào)用接口(System Call Interface)、內(nèi)核(Kernel)、
      平臺架構(gòu)相關(guān)的代碼(Architecture-Dependent Kernel Code) 。

    為什么 Linux 體系結(jié)構(gòu)要分為用戶空間和內(nèi)核空間的原因?
    1、現(xiàn)代 CPU 實現(xiàn)了不同的工作模式,不同模式下 CPU 可以執(zhí)行的指令和訪問的寄存器不同。
    2、Linux 從 CPU 的角度出發(fā),為了保護內(nèi)核的安全,把系統(tǒng)分成了兩部分。

    • 用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同的狀態(tài),我們可以通過兩種方式完成用戶空間到內(nèi)核空
      間的轉(zhuǎn)移:
      • 系統(tǒng)調(diào)用;
      • 硬件中斷。

    7. BASH和DOS之間的基本區(qū)別是什么?

    • BASH和DOS控制臺之間的主要區(qū)別在于3個方面:
      • BASH命令區(qū)分大小寫,而DOS命令則不區(qū)分;
        • 在BASH下,/ character是目錄分隔符,\作為轉(zhuǎn)義字符。在DOS下,/用作命令參數(shù)分隔
          符,\是目錄分隔符
      • DOS遵循命名文件中的約定,即8個字符的文件名后跟一個點,擴展名為3個字符。BASH沒
        有遵循這樣的慣例。

    8. Linux 開機啟動過程?

    了解即可。
    1、主機加電自檢,加載 BIOS 硬件信息。
    2、讀取 MBR 的引導(dǎo)文件(GRUB、LILO)。
    3、引導(dǎo) Linux 內(nèi)核。
    4、運行第一個進程 init (進程號永遠為 1 )。
    5、進入相應(yīng)的運行級別。
    6、運行終端,輸入用戶名和密碼。

    9. Linux系統(tǒng)缺省的運行級別?

    • 關(guān)機。
    • 單機用戶模式。
    • 字符界面的多用戶模式(不支持網(wǎng)絡(luò))。
    • 字符界面的多用戶模式。
    • 未分配使用。
    • 圖形界面的多用戶模式。
    • 重啟。

    10. Linux 使用的進程間通信方式?

    了解即可,不需要太深入。
    1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
    2、信號(signal) 。
    3、消息隊列。
    4、共享內(nèi)存。
    5、信號量。
    6、套接字(socket) 。

    11. Linux 有哪些系統(tǒng)日志文件?

    • 比較重要的是 /var/log/messages 日志文件。
      該日志文件是許多進程日志文件的匯總,從該文件可以看出任何入侵企圖或成功的入侵。
      另外,如果胖友的系統(tǒng)里有 ELK 日志集中收集,它也會被收集進去。

    12. Linux系統(tǒng)安裝多個桌面環(huán)境有幫助嗎?

    • 通常,一個桌面環(huán)境,如KDE或Gnome,足以在沒有問題的情況下運行。盡管系統(tǒng)允許從一個環(huán)
      境切換到另一個環(huán)境,但這對用戶來說都是優(yōu)先考慮的問題。有些程序在一個環(huán)境中工作而在另一
      個環(huán)境中無法工作,因此它也可以被視為選擇使用哪個環(huán)境的一個因素。

    13. 什么是交換空間?

    • 交換空間是Linux使用的一定空間,用于臨時保存一些并發(fā)運行的程序。當RAM沒有足夠的內(nèi)存來
      容納正在執(zhí)行的所有程序時,就會發(fā)生這種情況。

    14. 什么是root帳戶

    • root帳戶就像一個系統(tǒng)管理員帳戶,允許你完全控制系統(tǒng)。你可以在此處創(chuàng)建和維護用戶帳戶,為
      每個帳戶分配不同的權(quán)限。每次安裝Linux時都是默認帳戶。

    15. 什么是LILO?

    • LILO是Linux的引導(dǎo)加載程序。它主要用于將Linux操作系統(tǒng)加載到主內(nèi)存中,以便它可以開始運行。

    16. 什么是BASH?

    • BASH是Bourne Again SHell的縮寫。它由Steve Bourne編寫,作為原始Bourne Shell(由/ bin /
      sh表示)的替代品。它結(jié)合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易
      使用。從那以后,它已被改編為運行Linux的大多數(shù)系統(tǒng)的默認shell。

    17. 什么是CLI?

    • 命令行界面(英語:command-line interface,縮寫]:CLI)是在圖形用戶界面得到普及之前使
      用最為廣泛的用戶界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令后,予以
      執(zhí)行。也有人稱之為字符用戶界面(CUI)。
    • 通常認為,命令行界面(CLI)沒有圖形用戶界面(GUI)那么方便用戶操作。因為,命令行界面
      的軟件通常需要用戶記憶操作的命令,但是,由于其本身的特點,命令行界面要較圖形用戶界面節(jié)
      約計算機系統(tǒng)的資源。在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速
      度要快。所以,圖形用戶界面的操作系統(tǒng)中,都保留著可選的命令行界面。

    18. 什么是GUI?

    • 圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯
      示的計算機操作用戶界面。
    • 圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設(shè)備操縱屏幕上的
      圖標或菜單選項,以選擇命令、調(diào)用文件、啟動程序或執(zhí)行其它一些日常任務(wù)。與通過鍵盤輸入文
      本或字符命令來完成例行任務(wù)的字符界面相比,圖形用戶界面有許多優(yōu)點。

    19. 開源的優(yōu)勢是什么?

    • 開源允許你將軟件(包括源代碼)免費分發(fā)給任何感興趣的人。然后,人們可以添加功能,甚至可
      以調(diào)試和更正源代碼中的錯誤。它們甚至可以讓它運行得更好,然后再次自由地重新分配這些增強
      的源代碼。這最終使社區(qū)中的每個人受益。

    20. GNU項目的重要性是什么?

    • 這種所謂的自由軟件運動具有多種優(yōu)勢,例如可以自由地運行程序以及根據(jù)你的需要自由學習和修
      改程序。它還允許你將軟件副本重新分發(fā)給其他人,以及自由改進軟件并將其發(fā)布給公眾。

    二、磁盤、目錄、文件

    21. 簡單 Linux 文件系統(tǒng)?

    在 Linux 操作系統(tǒng)中,所有被操作系統(tǒng)管理的資源,例如網(wǎng)絡(luò)接口卡、磁盤驅(qū)動器、打印機、輸入輸出
    設(shè)備、普通文件或是目錄都被看作是一個文件。

    • 也就是說在 Linux 系統(tǒng)中有一個重要的概念:一切都是文件。其實這是 Unix 哲學的一個體現(xiàn),而
      Linux 是重寫 Unix 而來,所以這個概念也就傳承了下來。在 Unix 系統(tǒng)中,把一切資源都看作是
      文件,包括硬件設(shè)備。UNIX系統(tǒng)把每個硬件都看成是一個文件,通常稱為設(shè)備文件,這樣用戶就
      可以用讀寫文件的方式實現(xiàn)對硬件的訪問。
    • Linux 支持 5 種文件類型,如下圖所示:

    22. Linux 的目錄結(jié)構(gòu)是怎樣的?

    這個問題,一般不會問。更多是實際使用時,需要知道。

    • Linux 文件系統(tǒng)的結(jié)構(gòu)層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:

    常見目錄說明

    目錄介紹
    /bin存放二進制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這里;
    /etc存放系統(tǒng)管理和配置文件;
    /home存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示;
    /usr用于存放系統(tǒng)應(yīng)用程序;
    /opt額外安裝的可選應(yīng)用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里;
    /proc虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個目錄來獲取系統(tǒng)信息;
    /root超級用戶(系統(tǒng)管理員)的主目錄(特權(quán)階級);
    /sbin存放二進制可執(zhí)行文件,只有root才能訪問。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序。如ifconfig等;
    /dev用于存放設(shè)備文件;
    /mnt系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點,系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng);
    /boot存放用于系統(tǒng)引導(dǎo)時使用的各種文件;
    /lib存放著和系統(tǒng)運行相關(guān)的庫文件 ;
    /tmp用于存放各種臨時文件,是公用的臨時文件存儲點;
    /var用于存放運行時需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等。)等;
    /lost+found這個目錄平時是空的,系統(tǒng)非正常關(guān)機而留下“無家可歸”的文件(windows下叫什么.chk)就在這里

    23. 什么是 inode ?

    一般來說,面試不會問 inode 。但是 inode 是一個重要概念,是理解 Unix/Linux 文件系統(tǒng)和硬
    盤儲存的基礎(chǔ)。

    • 理解inode,要從文件儲存說起。
    • 文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區(qū)"(Sector)。每個扇區(qū)儲存512字節(jié)(相當于0.5KB)。
    • 操作系統(tǒng)讀取硬盤的時候,不會一個個扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個扇
      區(qū),即一次性讀取一個"塊"(block)。這種由多個扇區(qū)組成的"塊",是文件存取的最小單
      位。"塊"的大小,最常見的是4KB,即連續(xù)八個 sector組成一個 block。
    • 文件數(shù)據(jù)都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的
      創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等等。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名
      為"索引節(jié)點"。
    • 每一個文件都有對應(yīng)的inode,里面包含了與該文件有關(guān)的一些信息。

    簡述 Linux 文件系統(tǒng)通過 i 節(jié)點把文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)轉(zhuǎn)換的工作過程?
    如果看的一臉懵逼,也沒關(guān)系。一般來說,面試官不太會問這個題目。

    • Linux 通過 inode 節(jié)點表將文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進行轉(zhuǎn)換。
      • inode 節(jié)點是一個 64 字節(jié)長的表,表中包含了文件的相關(guān)信息,其中有文件的大小、文件所
        有者、文件的存取許可方式以及文件的類型等重要信息。在 inode 節(jié)點表中最重要的內(nèi)容是
        磁盤地址表。在磁盤地址表中有 13 個塊號,文件將以塊號在磁盤地址表中出現(xiàn)的順序依次讀
        取相應(yīng)的塊。
    • Linux 文件系統(tǒng)通過把 inode 節(jié)點和文件名進行連接,當需要讀取該文件時,文件系統(tǒng)在當
      前目錄表中查找該文件名對應(yīng)的項,由此得到該文件相對應(yīng)的 inode 節(jié)點號,通過該 inode
      節(jié)點的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結(jié)構(gòu)。

    24. 什么是硬鏈接和軟鏈接?

    • 硬鏈接:由于 Linux 下的文件是通過索引節(jié)點(inode)來識別文件,硬鏈接可以認為是一個指針,
      指向文件索引節(jié)點的指針,系統(tǒng)并不為它重新分配 inode 。每添加一個一個硬鏈接,文件的鏈接
      數(shù)就加 1 。
      • 不足:
        1.不可以在不同文件系統(tǒng)的文件間建立鏈接;
        2.只有超級用戶才可以為目錄創(chuàng)建硬鏈接。
    • 軟鏈接:軟鏈接克服了硬鏈接的不足,沒有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符
      號鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網(wǎng)絡(luò)對文件
      進行鏈接。
      • 不足:因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄
        中,再訪問鏈接文件,系統(tǒng)就找不到了,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;
        還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點和保存原文件的路徑。
    • 實際場景下,基本是使用軟鏈接。總結(jié)區(qū)別如下
      • 硬鏈接不可以跨分區(qū),軟件鏈可以跨分區(qū)。
      • 硬鏈接指向一個 inode 節(jié)點,而軟鏈接則是創(chuàng)建一個新的 inode 節(jié)點。
      • 刪除硬鏈接文件,不會刪除原文件,刪除軟鏈接文件,會把原文件刪除。

    25. RAID 是什么?

    RAID 全稱為獨立磁盤冗余陣列(Redundant Array of Independent Disks),基本思想就是把多個
    相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、 容量巨大
    的硬盤。RAID 通常被用在服務(wù)器電腦上,使用完全相同的硬盤組成一個邏輯扇區(qū),因此操作系統(tǒng)
    只會把它當做一個硬盤。
    RAID 分為不同的等級,各個不同的等級均在數(shù)據(jù)可靠性及讀寫性能上做了不同的權(quán)衡。在實際應(yīng)
    用中,可以依據(jù)自己的實際需求選擇不同的 RAID 方案。

    • 當然,因為很多公司都使用云服務(wù),大家很難接觸到 RAID 這個概念,更多的可能是普通云盤、
      SSD 云盤醬紫的概念。

    三、安全

    26. 一臺 Linux 系統(tǒng)初始化環(huán)境后需要做一些什么安全工作?

    1、添加普通用戶登陸,禁止 root 用戶登陸,更改 SSH 端口號。
    修改 SSH 端口不一定絕對哈。當然,如果要暴露在外網(wǎng),建議改下。l
    2、服務(wù)器使用密鑰登陸,禁止密碼登陸。
    3、開啟防火墻,關(guān)閉 SElinux ,根據(jù)業(yè)務(wù)需求設(shè)置相應(yīng)的防火墻規(guī)則。
    4、裝 fail2ban 這種防止 SSH 暴力破擊的軟件。
    5、設(shè)置只允許公司辦公網(wǎng)出口 IP 能登陸服務(wù)器(看公司實際需要)
    也可以安裝 VPN 等軟件,只允許連接 VPN 到服務(wù)器上。
    6、修改歷史命令記錄的條數(shù)為 10 條。
    7、只允許有需要的服務(wù)器可以訪問外網(wǎng),其它全部禁止。
    8、做好軟件層面的防護。
    8.1 設(shè)置 nginx_waf 模塊防止 SQL 注入。
    8.2 把 Web 服務(wù)使用 www 用戶啟動,更改網(wǎng)站目錄的所有者和所屬組為 www 。

    27. 什么叫 CC 攻擊?什么叫 DDOS 攻擊?

    • CC 攻擊,主要是用來攻擊頁面的,模擬多個用戶不停的對你的頁面進行訪問,從而使你的系統(tǒng)資
      源消耗殆盡。
    • DDOS 攻擊,中文名叫分布式拒絕服務(wù)攻擊,指借助服務(wù)器技術(shù)將多個計算機聯(lián)合起來作為攻擊
      平臺,來對一個或多個目標發(fā)動 DDOS 攻擊。
      攻擊,即是通過大量合法的請求占用大量網(wǎng)絡(luò)資源,以達到癱瘓網(wǎng)絡(luò)的目的。

    怎么預(yù)防 CC 攻擊和 DDOS 攻擊?

    • 防 CC、DDOS 攻擊,這些只能是用硬件防火墻做流量清洗,將攻擊流量引入黑洞。
      流量清洗這一塊,主要是買 ISP 服務(wù)商的防攻擊的服務(wù)就可以,機房一般有空余流量,我們一般
      是買服務(wù),畢竟攻擊不會是持續(xù)長時間。

    28. 什么是網(wǎng)站數(shù)據(jù)庫注入?

    • 由于程序員的水平及經(jīng)驗參差不齊,大部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法
      性進行判斷。
    • 應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想
      得知的數(shù)據(jù),這就是所謂的 SQL 注入。
    • SQL注入,是從正常的 WWW 端口訪問,而且表面看起來跟一般的 Web 頁面訪問沒什么區(qū)別,如
      果管理員沒查看日志的習慣,可能被入侵很長時間都不會發(fā)覺。

    如何過濾與預(yù)防?

    • 數(shù)據(jù)庫網(wǎng)頁端注入這種,可以考慮使用 nginx_waf 做過濾與預(yù)防。

    29. Shell 腳本是什么?

    • 一個 Shell 腳本是一個文本文件,包含一個或多個命令。作為系統(tǒng)管理員,我們經(jīng)常需要使用多個
      命令來完成一項任務(wù),我們可以添加這些所有命令在一個文本文件(Shell 腳本)來完成這些日常工
      作任務(wù)。

    四、實戰(zhàn)

    30.如何選擇 Linux 操作系統(tǒng)版本?

    一般來講,桌面用戶首選 Ubuntu ;服務(wù)器首選 RHEL 或 CentOS ,兩者中首選 CentOS 。

    • 根據(jù)具體要求:
      • 安全性要求較高,則選擇 Debian 或者 FreeBSD 。
      • 需要使用數(shù)據(jù)庫高級服務(wù)和電子郵件網(wǎng)絡(luò)應(yīng)用的用戶可以選擇 SUSE 。
      • 想要新技術(shù)新功能可以選擇 Feddora ,Feddora 是 RHEL 和 CentOS 的一個測試版和預(yù)發(fā)布
        版本。
      • 【重點】根據(jù)現(xiàn)有狀況,絕大多數(shù)互聯(lián)網(wǎng)公司選擇 CentOS 。現(xiàn)在比較常用的是 6 系列,現(xiàn)
        在市場占有大概一半左右。另外的原因是 CentOS 更側(cè)重服務(wù)器領(lǐng)域,并且無版權(quán)約束。
        CentOS 7 系列,也慢慢使用的會比較多了。

    31. 如何規(guī)劃一臺 Linux 主機,步驟是怎樣?

    1、確定機器是做什么用的,比如是做 WEB 、DB、還是游戲服務(wù)器。
    不同的用途,機器的配置會有所不同。
    2、確定好之后,就要定系統(tǒng)需要怎么安裝,默認安裝哪些系統(tǒng)、分區(qū)怎么做。
    3、需要優(yōu)化系統(tǒng)的哪些參數(shù),需要創(chuàng)建哪些用戶等等的。

    32. 請問當用戶反饋網(wǎng)站訪問慢,你會如何處理?

    有哪些方面的因素會導(dǎo)致網(wǎng)站網(wǎng)站訪問慢?
    1、服務(wù)器出口帶寬不夠用

    • 本身服務(wù)器購買的出口帶寬比較小。一旦并發(fā)量大的話,就會造成分給每個用戶的出口
      帶寬就小,訪問速度自然就會慢。
    • 跨運營商網(wǎng)絡(luò)導(dǎo)致帶寬縮減。例如,公司網(wǎng)站放在電信的網(wǎng)絡(luò)上,那么客戶這邊對接是
      長城寬帶或聯(lián)通,這也可能導(dǎo)致帶寬的縮減。

    2、服務(wù)器負載過大,導(dǎo)致響應(yīng)不過來
    可以從兩個方面入手分析:

    • 分析系統(tǒng)負載,使用 w 命令或者 uptime 命令查看系統(tǒng)負載。如果負載很高,則使用
      top 命令查看 CPU ,MEM 等占用情況,要么是 CPU 繁忙,要么是內(nèi)存不夠。
    • 如果這二者都正常,再去使用 sar 命令分析網(wǎng)卡流量,分析是不是遭到了攻擊。一旦分
      析出問題的原因,采取對應(yīng)的措施解決,如決定要不要殺死一些進程,或者禁止一些訪
      問等。

    3、數(shù)據(jù)庫瓶頸

    • 如果慢查詢比較多。那么就要開發(fā)人員或 DBA 協(xié)助進行 SQL 語句的優(yōu)化。
    • 如果數(shù)據(jù)庫響應(yīng)慢,考慮可以加一個數(shù)據(jù)庫緩存,如 Redis 等。然后,也可以搭建
      MySQL 主從,一臺 MySQL 服務(wù)器負責寫,其他幾臺從數(shù)據(jù)庫負責讀。

    4、網(wǎng)站開發(fā)代碼沒有優(yōu)化好
    例如 SQL 語句沒有優(yōu)化,導(dǎo)致數(shù)據(jù)庫讀寫相當耗時。

    針對網(wǎng)站訪問慢,怎么去排查?
    1、首先要確定是用戶端還是服務(wù)端的問題。當接到用戶反饋訪問慢,那邊自己立即訪問網(wǎng)站看
    看,如果自己這邊訪問快,基本斷定是用戶端問題,就需要耐心跟客戶解釋,協(xié)助客戶解決問題。
    不要上來就看服務(wù)端的問題。一定要從源頭開始,逐步逐步往下。
    2、如果訪問也慢,那么可以利用瀏覽器的調(diào)試功能,看看加載那一項數(shù)據(jù)消耗時間過多,是圖片
    加載慢,還是某些數(shù)據(jù)加載慢。
    3、針對服務(wù)器負載情況。查看服務(wù)器硬件(網(wǎng)絡(luò)、CPU、內(nèi)存)的消耗情況。如果是購買的云主
    機,比如阿里云,可以登錄阿里云平臺提供各方面的監(jiān)控,比如 CPU、內(nèi)存、帶寬的使用情況。
    4、如果發(fā)現(xiàn)硬件資源消耗都不高,那么就需要通過查日志,比如看看 MySQL慢查詢的日志,看
    看是不是某條 SQL 語句查詢慢,導(dǎo)致網(wǎng)站訪問慢。

    怎么去解決?
    1、如果是出口帶寬問題,那么久申請加大出口帶寬。
    2、如果慢查詢比較多,那么就要開發(fā)人員或 DBA 協(xié)助進行 SQL 語句的優(yōu)化。
    3、如果數(shù)據(jù)庫響應(yīng)慢,考慮可以加一個數(shù)據(jù)庫緩存,如 Redis 等等。然后也可以搭建MySQL 主
    從,一臺 MySQL 服務(wù)器負責寫,其他幾臺從數(shù)據(jù)庫負責讀。
    4、申請購買 CDN 服務(wù),加載用戶的訪問。
    5、如果訪問還比較慢,那就需要從整體架構(gòu)上進行優(yōu)化咯。做到專角色專用,多臺服務(wù)器提供同
    一個服務(wù)。

    33. Linux 性能調(diào)優(yōu)都有哪幾種方法?

    1、Disabling daemons (關(guān)閉 daemons)。
    2、Shutting down the GUI (關(guān)閉 GUI)。
    3、Changing kernel parameters (改變內(nèi)核參數(shù))。
    4、Kernel parameters (內(nèi)核參數(shù))。
    5、Tuning the processor subsystem (處理器子系統(tǒng)調(diào)優(yōu))。
    6、Tuning the memory subsystem (內(nèi)存子系統(tǒng)調(diào)優(yōu))。
    7、Tuning the file system (文件系統(tǒng)子系統(tǒng)調(diào)優(yōu))。
    8、Tuning the network subsystem(網(wǎng)絡(luò)子系統(tǒng)調(diào)優(yōu))。

    34. 基本命令

    cd (change directory:英文釋義是改變目錄)切換目錄

    cd ../ ;跳到上級目錄 cd /opt ;不管現(xiàn)在到那直接跳到指定的opt文件夾中 cd ~ ;切換當前用戶的家目錄。root用戶的家目錄就是root目錄。

    pwd (print working directory:顯示當前工作目錄的絕對路徑)

    pwd 顯示當前的絕對路勁

    ls (ls:list的縮寫,查看列表)查看當前目錄下的所有文件夾(ls 只列出文件名或目錄名)

    ls -a ;顯示所有文件夾,隱藏文件也顯示出來 ls -R ;連同子目錄一起列出來

    ll (ll:list的縮寫,查看列表詳情)查看當前目錄下的所有詳細信息和文件夾(ll 結(jié)果是詳細,有時間,
    是否可讀寫等信息)

    ll -a ;顯示所有文件,隱藏文件也顯示出來 ll -R ;連同子目錄內(nèi)容一起列出來 ll -h ;友好展示詳情信息,可以看大小 ll -al ;即能顯示隱藏文件又能顯示詳細列表。

    touch (touch:創(chuàng)建文件)創(chuàng)建文件

    touch test.txt ;創(chuàng)建test.txt文件 touch /opt/java/test.java ;在指定目錄創(chuàng)建test.java文件

    mkdir (mkdir:創(chuàng)建目錄) 創(chuàng)建目錄

    mkdir 文件夾名稱 ;在此目錄創(chuàng)建文件夾 mkdir /opt/java/jdk ;在指定目錄創(chuàng)建文件夾

    cat (concatenate:顯示或把多個文本文件連接起來)查看文件命令(可以快捷查看當前文件的內(nèi)
    容)(不能快速定位到最后一頁)

    cat lj.log ;快捷查看文件命令 Ctrl + c ;暫停顯示文件 Ctrl + d ;退出查看文件命令

    more (more:更多的意思)分頁查看文件命令(不能快速定位到最后一頁)

    回車:向下n行,需要定義,默認為1行。 空格鍵:向下滾動一屏或Ctrl+F B:返回上一層或Ctrl+B q:退出more

    less (lese:較少的意思)分頁查看文件命令(可以快速定位到最后一頁)

    less -m 顯示類似于more命令的百分比。 less -N 顯示每行的行號。(大寫的N) 兩參數(shù)一起使用如:less -mN 文件名,如此可分頁并顯示行號。 空格鍵:前下一頁或page down。 回車:向下一行。 b:后退一頁 或 page up。 q:退出。 d:前進半頁。 u:后退半頁

    tail(尾巴) 查看文件命令(看最后多少行)

    tail -10 ;文件名 看最后10行

    cp(copy單詞縮寫,復(fù)制功能)

    cp /opt/java/java.log /opt/logs/ ;把java.log 復(fù)制到/opt/logs/下 cp /opt/java/java.log /opt/logs/aaa.log ;把java.log 復(fù)制到/opt/logs/下并且改名為aaa.log cp -r /opt/java /opt/logs ;把文件夾及內(nèi)容復(fù)制到logs文件中

    mv(move單詞縮寫,移動功能,該文件名稱功能)

    mv /opt/java/java.log /opt/mysql/ ;移動文件到mysql目錄下 mv java.log mysql.log ;把java.log改名為mysql.log

    rm(remove:移除的意思)刪除文件,或文件夾

    -f或--force 強制刪除文件或目錄。刪除文件不包括文件夾的文件 -r或-R或--recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并刪除。 -rf 強制刪除文件夾及內(nèi)容 rm 文件名 ;安全刪除命令 (yes刪除 no取消) rm -rf 強制刪除文件夾及內(nèi)容 rm -rf * 刪除當前目錄下的所有內(nèi)容。 rm -rf /* 刪除Linux系統(tǒng)根目錄下所有的內(nèi)容。系統(tǒng)將完蛋。

    find (find:找到的意思)查找指定文件或目錄

    * 表示0~多個任意字符。 find -name 文件名;按照指定名稱查找在當前目錄下查找文件 find / -name 文件名按照指定名稱全局查找文件 find -name '*文件名' ;任意前綴加上文件名在當前目錄下查找文件 find / -name '*文件名*' ;全局進行模糊查詢帶文件名的文件

    vi (VIsual:視覺)文本編輯器 類似win的記事本 (操作類似于地下的vim命令,看底下vim 的操作)
    vim (VI IMproved:改進版視覺)改進版文本編輯器 (不管是文件查看還是文件編輯 按 Shift + 上或
    者下可以上下移動查看視角)

    輸入”vim 文件名” 打開文件,剛剛時是”一般模式”。 一般模式:可以瀏覽文件內(nèi)容,可以進行文本快捷操作。如單行復(fù)制,多行復(fù)制,單行刪除,多行刪除,(退 出)等。 插入模式:可以編輯文件內(nèi)容。 底行模式:可以進行強制退出操作,不保存 :q! 可以進行保存并退出操作 :wq 按下”i”或”a”或”o”鍵,從”一般模式”,進入”插入模式(編輯模式)”。 在編輯模式下按”Esc” 即可到一般模式 在一般模式下按”:”,冒號進入底行模式。 在一般模式下的快捷鍵 dd ;刪除一整行 X ;向前刪除 等同于windowns系統(tǒng)中的刪除鍵 x ;向后刪除和大寫x相反方向 Ctrl + f ;向后看一頁 Ctrl + b ;向前看一頁 u ;撤銷上一步操作 /word ;向下查找word關(guān)鍵字 輸入:n查找下一個,N查找上一個(不管是哪個查找都是全局查找 只不過 n的方向相反) ?log ;向上查找log關(guān)鍵字 輸入:n查找上一個,N查找下一個 :1,90s/redis/Redis/g ;把1-90行的redis替換為Redis。語法n1,n2s/原關(guān)鍵字/新關(guān)鍵字/g,n1 代表其實行,n2代表結(jié)尾行,g是必須要的 :0 ;光標移動到第一行 :$ ;光標移動到最后一行 :300 ;光標移動到300行,輸入多少數(shù)字移動到多少行 :w ;保存 :w! ;強制保存 :q ;退出 :q! ;強制退出 5dd ;刪除后面5行,打一個參數(shù)為自己填寫 5x ;刪除此光標后面5個字符 d1G ;刪除此光標之前的所有 d0 ;從光標當前位置刪除到此行的第一個位置 yy ;復(fù)制 p ;在光標的下面進行粘貼 P ;在光標的上門進行粘貼

    | 管道命令(把多個命令組合起來使用)

    管道命令的語法:命令1 | 命令2 | 命令3。

    grep (grep :正則表達式)正則表達式,用于字符串的搜索工作(模糊查詢)。不懂可以先過

    單獨使用: grep String test.java ;在test.java文件中查找String的位置,返回整行 一般此命令不會單獨使用下面列幾個常用的命令(地下通過管道命令組合起來使用) ps aux|grep java ;查找?guī)ava關(guān)鍵字的進程 ll |grep java ;查找?guī)ava關(guān)鍵字的文件夾及文件

    yum install -y lrzsz 命令(實現(xiàn)win到Linux文件互相簡單上傳文件)

    #(實際上就是在Linux系統(tǒng)中下載了一個插件)下了了此安裝包后就可以實現(xiàn)win系統(tǒng)到linux之間拉文件拉文件 #等待下載完了就可以輸入: rz 從win系統(tǒng)中選擇文件上傳到Linux系統(tǒng)中 sz 文件名 選擇Linux系統(tǒng)的文件復(fù)制到win系統(tǒng)中

    tar (解壓 壓縮 命令)

    常用的組合命令: -z 是否需要用gzip壓縮。 -c 建立一個壓縮文件的參數(shù)指令(create) –壓縮 -x 解開一個壓縮文件的參數(shù)指令(extract) –解壓 -v 壓縮的過程中顯示文件(verbose) -f 使用檔名,在f之后要立即接檔中(file) 常用解壓參數(shù)組合:zxvf 常用壓縮參數(shù)組合:zcvf 解壓命令: tar -zxvf redis-3.2.8.tar.gz ;解壓到當前文件夾 tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;解壓到指定目錄 壓縮命令:(注意 語法有點反了,我反正每次都搞反) tar -zcvf redis-3.2.8.tar.gz redis-3.2.8/ ;語法 tar -zcvf 壓縮后的名稱 要壓縮的 文件 tar -zcvf 壓縮后的文件(可指定目錄) 要壓縮的文件(可指定目錄)

    ps (process status:進程狀態(tài),類似于windows的任務(wù)管理器)

    常用組合:ps -ef 標準的格式查看系統(tǒng)進程 ps -aux BSD格式查看系統(tǒng)進程 ps -aux|grep redis BSD格式查看進程名稱帶有redis的系統(tǒng)進程(常用技巧) //顯示進程的一些屬性,需要了解(ps aux) USER //用戶名 PID //進程ID號,用來殺死進程的 %CPU //進程占用的CPU的百分比 %MEM //占用內(nèi)存的的百分比 VSZ //該進程使用的虛擬內(nèi)存量(KB) RSS //該進程占用的固定內(nèi)存量(KB) STAT //進程的狀態(tài) START //該進程被觸發(fā)啟動時間 TIME //該進程實際使用CPU運行的時間

    clear 清屏命令。(強迫癥患者使用)

    kill 命令用來中止一個進程。(要配合ps命令使用,配合pid關(guān)閉進程) (ps類似于打開任務(wù)管理器,kill類似于關(guān)閉進程) kill -5 進程的PID ;推薦,和平關(guān)閉進程 kill -9 PID ;不推薦,強制殺死進程

    ifconfig命令

    用于查看和更改網(wǎng)絡(luò)接口的地址和參數(shù),包括IP地址、網(wǎng)絡(luò)掩碼、廣播地址,使用權(quán)限是超級用戶。(一般是 用來查看的,很少更改) 如果此命令輸入無效,先輸入yum -y install net-tools ifconfig

    ping (用于檢測與目標的連通性)語法:ping ip地址

    測試: 1、在Windows操作系統(tǒng)中cmdipconfig,查看本機IP地址: 2、再到LInux系統(tǒng)中輸入 ping ip地址 (公司電腦,我就不暴露Ip了,沒圖片 自己去試) 按Ctrl + C 可以停止測

    free 命令 (顯示系統(tǒng)內(nèi)存)

    #顯示系統(tǒng)內(nèi)存使用情況,包括物理內(nèi)存、交互區(qū)內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存。 -b 以Byte顯示內(nèi)存使用情況 -k 以kb為單位顯示內(nèi)存使用情況 -m 以mb為單位顯示內(nèi)存使用情況 -g 以gb為單位顯示內(nèi)存使用情況 -s<間隔秒數(shù)> 持續(xù)顯示內(nèi)存 -t 顯示內(nèi)存使用總

    top 命令

    #顯示當前系統(tǒng)正在執(zhí)行的進程的相關(guān)信息,包括進程 ID、內(nèi)存占用率、CPU 占用率等 -c 顯示完整的進程命令 -s 保密模式 -p <進程號> 指定進程顯示 -n <次數(shù)>循環(huán)顯示

    netstat 命令

    #Linux netstat命令用于顯示網(wǎng)絡(luò)狀態(tài)。 #利用netstat指令可讓你得知整個Linux系統(tǒng)的網(wǎng)絡(luò)情況。 #語法: netstat [-acCeFghilMnNoprstuvVwx][-A<網(wǎng)絡(luò)類型>][--ip]

    file (可查看文件類型)

    file 文件名

    重啟linux

    Linux centos 重啟命令:reboot

    關(guān)機linux

    Linux centos 關(guān)機命令:halt

    同步時間命令

    ntpdate ntp1.aliyun.com

    更改為北京時間命令

    rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    查看時間命令:

    date

    史上最全Java面試寶典,BAT大廠面試必備。整理不易,建議先關(guān)注點贊加收藏

    序號名稱地址
    1Java基礎(chǔ)面試題(91道含答案)(點擊查看)
    2Java并發(fā)編程面試題 (123道含答案)(點擊查看)
    3Java異常面試題 (33道含答案)(點擊查看)
    4Java虛擬機(JVM)面試題(51道含答案)(點擊查看)
    5Java集合面試題(52道含答案)(點擊查看)
    6Linux面試題(50道含答案)(點擊查看)
    7Memcache面試題(23道含答案)(點擊查看)
    8Mybatiss面試題 (37道含答案)(點擊查看)
    9MySQL面試題(40道含答案)(點擊查看)
    10Netty面試題(49道含答案)(點擊查看)
    11Nginx面試題(23道含答案)(點擊查看)
    12RabbitMQ面試題(22道含答案)(點擊查看)
    13Redis面試題(70道含答案)(點擊查看)
    14SpringBoot面試題(44道含答案)(點擊查看)
    15SpringCloud面試題(49道含答案)(點擊查看)
    16SpringMVC面試題(29道含答案)(點擊查看)
    17Spring面試題(75道含答案)(點擊查看)
    18TCP、UDP、Socket、Http網(wǎng)絡(luò)編程面試題(47道含答案)(點擊查看)
    19Tomcat面試題(15道含答案)(點擊查看)
    20Zookeeper面試題(28道含答案)(點擊查看)
    21多線程面試題(60道含答案)(點擊查看)
    22設(shè)計模式面試題(14道含答案)(點擊查看)
    23BIO、NIO、AIO、Netty面試題(35道含答案)(點擊查看)
    24Dubbo面試題(47道含答案)(點擊查看)
    25ElasticSearch面試題(31道含答案)(點擊查看)
    26Git常用命令(63條)(點擊查看)

    總結(jié)

    以上是生活随笔為你收集整理的【2022最新Java面试宝典】—— Linux面试题(50道含答案)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。