主頁 > 後端開發 > 【爆肝一周】面試10多家中大廠后的萬字總結——??JavaWeb篇??(建議收藏)

【爆肝一周】面試10多家中大廠后的萬字總結——??JavaWeb篇??(建議收藏)

2021-08-20 07:24:12 後端開發

?歡迎訂閱《大廠面試突擊》專欄,面試10多家大廠總結出的高頻面試知識,免費階段大家趕快訂閱

?更多精品專欄簡介點這里

?更多大廠全路線學習視頻+筆記,PC端看左側「關于作者」,手機端「私信」博主,

?老規矩,私信前請先關注,不然無法回復大家,感謝支持!

幸福,不是長生不老,不是大魚大肉,不是權傾朝野,幸福是每一個微小的生活愿望達成,當你想吃的時候有得吃,想被愛的時候有人來愛你,

前言

哈嘍,大家好,我是一條,

告訴大家一個訊息,我在7月份又離職了,離職后我開始瘋狂的面試,一共面了百度、位元組、滴滴、美團、陌陌、58同城、汽車之家、元氣森林、猿輔導,掌閱科技,美術寶、moka等10多家中大廠,最多的時候一天4面,

iShot2021-08-05 18.02.50

面完之后我發現大廠對于演算法的重視程度非常之高,演算法題沒做出來,基本就不會再往下問了,你“八股文”再溜也沒有展現的機會,

所以我開始刷leetcode,每天一道,放在了《leetcode》專欄里,趁著還沒有收費,大家可以抓緊訂閱一波,

但演算法非一日之功可成,我們的“八股文”也不能落下,

一條根據多家公司的面試檢驗,將高頻面試題分門別類的總結出來,包括java基礎篇、javaweb篇、集合篇、jvm篇、多執行緒篇、框架篇、設計模式篇、資料結構篇、網路篇、作業系統篇、mysql篇、redis篇、kafka篇、ES篇、dubbo篇,Spring cloud篇、企業專案篇,由淺入深,到時有可能還會增加,

所有文章都會放在《大廠面試突擊》專欄里,以后會收費,所以請大家現在抓緊訂閱,


本文是??javaWeb篇??

java Web是用Java技術來解決相關web互聯網領域的技術堆疊,Web就是網頁,分為靜態和動態,涉及 的知識點主要包括jsp,servlet,tomcat,http,MVC等知識,由于jsp更偏向前端,本文不做講解,

本文特別之處

現在網路的面試題資源可以說數不勝數,但也良莠不齊,

那么,博主總結的有哪些特別之處呢?

選題

以戰養戰

相比于逐個知識點的去講解,一條更偏向于用面試題的方式呈現,原因如下:

  • 節省時間,有很多朋友都是面試前臨時抱佛腳,從helloworld開始講,根本來不及好嗎
  • 重點突出,有些東西面試官是不會問的,也沒法問,暫時就可以不看
  • 轉換思維,最重要的一點,有很多時候這個東西你知道,但一問就不會,有沒有,有的評論區扣1

經驗之談

關于選題,java的知識點又多又雜,技術更新又很快,所以明白以下幾點很重要:

  • 很多技術已經淘汰,所以就沒必要再去看,

  • 有些技術是當下正火,面試官特別愛問,

  • 有些知識點之間存在關聯關系,問完這個必問那個,

一條憑借面試了10多家大廠的經驗總結最高頻的知識點,讓你不做無用功,事半功倍!

解答

  • 文章中大部分題目都是在面試中真實被問到的,會標明出處,
  • 對知識點的講解都盡量簡單,用生活中的小事舉例說明,
  • 除了知識點講解,還會說明這道題的考點是哪,怎么回答更加分,
  • 會從一道題延伸出多道題,理清關聯關系,題目的順序都是精心排列,由淺入深,

題目合集

文章目錄

    • 前言
    • 本文特別之處
      • 選題
        • 以戰養戰
        • 經驗之談
      • 解答
    • 題目合集
      • HTTP網路請求方式有哪些?
      • GET和POST有什么區別?
      • 什么是冪等性?
      • 如何保證冪等性?
        • insert前select
        • 加鎖
        • 唯一索引
        • Token
      • 常見的網路狀態碼有哪些?
        • 1xx(資訊性狀態碼)
        • 2xx(成功狀態碼)
        • 3xx(重定向狀態碼)
        • 301和302的區別?
        • 4xx(客戶端錯誤狀態碼)
        • 5xx(服務器錯誤狀態碼)
      • 轉發和重定向有什么區別?
        • 轉發
        • 重定向
      • 什么是跨域?如何解決跨域問題?
        • 什么是跨域?
        • 解決方案
      • 什么是ajax?
      • 什么是Servlet
      • 說一說Servlet的生命周期
      • 比較一下Listener和Filter/Servlet的區別
      • 攔截器和過濾器的區別
      • Jsp有哪些內置物件?作用分別是什么?
      • jsp和servlet的區別、共同點、各自應用的范圍?
      • tomcat容器是如何創建servlet類實體?用到了什么原理?
      • 如何解決請求和回應的亂碼問題
        • 請求
        • 回應
      • session、cookie、token都是什么?
      • MVC與三層架構
        • MVC
        • 三層架構
      • 說說你對JSON的理解
      • 介面間基于JSON傳輸資料有什么好處?
      • 什么是單點登錄
      • 在單點登錄中,如果cookie被禁用了怎么辦?
    • 最后

HTTP網路請求方式有哪些?

出自moka、美術寶

相信這個問題都難不倒大家,但很多人答不全,

如果能回答出應用場景就完美了,

  • GET:最常用的方式,用來向服務器請求資料,沒有請求體,請求引數放在URL后面,
  • POST:用于向表單提交資料,傳送的資料放在請求體中,
  • PUT:用來向服務器上傳檔案,一般對應修改操作,POST用于向服務器發送資料,PUT用于向服務器儲存資料,沒有驗證機制,任何人都可以操作,存在安全問題,具有冪等性,
  • DELETE:用于洗掉服務器上的檔案,具有冪等性,同樣存在安全問題,
  • HEAD:用HEAD進行請求服務器時,服務器只回傳回應頭,不回傳回應體,與GET一樣沒有請求體,常用于檢查請求的URL是否有效,
  • PATCH:對資源進行部分修改,與PUT區別在于,PUT是修改所有資源,替代它,而PATCH只是修改部分資源,
  • TRACE:用來查看一個請求,經過網關,代理到達服務器,最后請求的變換,因安全問題被禁用,
  • OPTIONS:當客戶端不清楚對資源操作的方法,可以使用這個,具有冪等性,

GET和POST有什么區別?

高頻必考題

  1. 作用不同:GET 用于獲取資源,而 POST 用于傳輸物體主體,
  2. 引數位置不一樣: GET 的引數是以查詢字串出現在 URL 中,而 POST 的引數存盤在物體主體中,雖然GET的引數暴露在外面,但可以通過加密的方式處理,而 POST 引數即使存盤在物體主體中,我們也可以通過一些抓包工具如(Fiddler)查看,
  3. 冪等性:GET是冪等性,而POST不是冪等性,(面試官緊接著可能就會問你什么是冪等性?如何保證冪等性?)
  4. 安全性:安全的 HTTP 方法不會改變服務器狀態,也就是說它只是可讀的, GET 方法是安全的,而 POST 卻不是,因為 POST 的目的是傳送物體主體內容,這個內容可能是用戶上傳的表單資料,上傳成功之后,服務器可能把這個資料存盤到資料庫中,因此狀態也就發生了改變,

什么是冪等性?

是否具有冪等性也是一個http請求的重要關注點,

冪等性:指的是同樣的請求不管執行多少次,效果都是一樣,服務器狀態也是一樣的,具有冪等性的請求方法沒有副作用,(統計用途除外)

如何保證冪等性?

假設這樣一個場景:有時我們在填寫某些form表單時,保存按鈕不小心快速點了兩次,表中竟然產生了兩條重復的資料,只是id不一樣,

這是一個比較常見的冪等性問題,在高并發場景下會變得更加復雜,那怎么保證介面的冪等性呢?

insert前select

插入資料前先根據某一欄位查詢一下資料庫,如果已經存在就修改,不存在再插入,

加鎖

加鎖可解決一切問題,但也要考慮并發性,

主要包括悲觀鎖,樂觀鎖,分布式鎖,

悲觀鎖的并發性較低,更適合使用在防止資料重復的場景,注意冪等性不光是防止重復還需要結果相同,

樂觀鎖可以很高的提升性能,也就是常說的版本號,

分布式鎖應用在高并發場景,主要用redis來實作,

唯一索引

通過資料庫的唯一索引來保證結果的一致性和資料的不重復,

Token

兩次請求,第一請求拿到token,第二次帶著token去完成業務請求,

常見的網路狀態碼有哪些?

出自美術寶

此題考查的是你有沒有實際解決bug的經驗和能力,不知道對應網路狀態碼的含義,解決問題的能力就會受到懷疑,

應該重點關注同一系列之間的區別,比如504和505什么區別?

網路狀態碼共三位數字組成,根據第一個數字可分為以下幾個系列:

1xx(資訊性狀態碼)

代表請求已被接受,需要繼續處理,

包括:100、101、102

這一系列的在實際開發中基本不會遇到,可以略過,

2xx(成功狀態碼)

表示成功處理了請求的狀態代碼,

200:請求成功,表明服務器成功了處理請求,

202:服務器已接受請求,但尚未處理,

204:服務器成功處理了請求,但沒有回傳任何內容,

206:服務器成功處理了部分 GET 請求,

3xx(重定向狀態碼)

300:針對請求,服務器可執行多種操作,

301:永久重定向

302:臨時性重定向

303:303與302狀態碼有著相同的功能,但303狀態碼明確表示客戶端應當采用GET方法獲取資源,

301和302的區別?

301比較常用的場景是使用域名跳轉,比如,我們訪問 http://www.baidu.com 會跳轉到https://www.baidu.com,發送請求之后,就會回傳301狀態碼,然后回傳一個location,提示新的地址,瀏覽器就會拿著這個新的地址去訪問,

302用來做臨時跳轉比如未登陸的用戶訪問用戶中心重定向到登錄頁面,

4xx(客戶端錯誤狀態碼)

400:該狀態碼表示請求報文中存在語法錯誤,但瀏覽器會像200 OK一樣對待該狀態碼,

401:表示發送的請求需要有通過HTTP認證的認證資訊,比如token失效就會出現這個問題,

403:被拒絕,表明對請求資源的訪問被服務器拒絕了,

404:找不到,表明服務器上無法找到請求的資源,也可能是拒絕請求但不想說明理由,

5xx(服務器錯誤狀態碼)

500:服務器本身發生錯誤,可能是Web應用存在的bug或某些臨時的故障,

502:該狀態碼表明服務器暫時處于超負載或正在進行停機維護,現在無法處理請求,

??有時候回傳的狀態碼回應是錯誤的,比如Web應用程式內部發生錯誤,狀態碼依然回傳200

轉發和重定向有什么區別?

上面提到了重定向,那你知道什么是轉發嗎?

轉發

A找B借錢,B沒有錢,B去問C,C有錢,C把錢借給A的程序,

客戶瀏覽器發送http請求,web服務器接受此請求,呼叫內部的一個方法在容器內部完成請求處理和轉發動作,將目標資源發送給客戶,

整個轉發一個請求,一個回應,地址欄不會發生變化,不能跨域訪問,

重定向

A找B借錢,B沒有錢,B讓A去找C,A又和C借錢,C有錢,C把錢借給A的程序,

客戶瀏覽器發送http請求,web服務器接受后發送302狀態碼回應及對應新的location給客戶瀏覽器,客戶瀏覽器發現是302回應,則自動再發送一個新的http請求,請求url是新的location地址,服務器根據此請求尋找資源并發送給客戶,

兩個請求,兩個回應,可以跨域,

什么是跨域?如何解決跨域問題?

出自moka

考查實際開發中解決問題的能力,

什么是跨域?

跨域是針對瀏覽器的,由于瀏覽器的同源策略不能執行其他網站的腳本,那什么是同源?

同源是指域名、協議、埠均相同,只要有一個不同,就是跨域,

解決方案

  • JSONP跨域:人們發現呼叫js檔案是不受跨域影響的,所以通過把資料裝進JS來解決跨域問題,JSONP是一段引數是json格式(大多數情況)的JS代碼,
  • nginx反向代理
  • HEADERS:通過修改headersAccess-Control-Allow-Origin允許所有人訪問,

還有其他解決方案,但不常用,實際開發都是基于springboot注解實作,

什么是ajax?

一種「異步請求」+「區域重繪」技術,等于異步JavaScript 和 XML,用于創建快速動態網頁,

異步請求:不需要等待當前請求回傳就可以發送下一個請求,

區域重繪:無需重新加載整個網頁的情況下,能夠更新部分網頁,

什么是Servlet

servlet是一個比較抽獎的概念,也是web部分的核心組件,大家回答這個問題一定要加入自己的理解,不要背定義,

servlet其實就是一個java程式,他主要是用來解決動態頁面的問題,

之前都是瀏覽器像服務器請求資源,服務器(tomcat)回傳頁面,但用戶多了之后,每個用戶希望帶到不用的資源,這時就該servlet上場表演了,

servlet存在于tomcat之中,用來網路請求與回應,但他的重心更在于業務處理,我們訪問京東和淘寶的回傳的商品是不一樣的,就需要程式員去撰寫,目前MVC三層架構,我們都是在service層處理業務,但這其實是從servlet中抽取出來的,

看一下servlet處理請求的程序:

image-20210812201447743

說一說Servlet的生命周期

Servlet生命周期分為三個階段:

  • 初始化階段 呼叫init()方法

  • 回應客戶請求階段  呼叫service()方法-àdoGet/doPost()

  • 終止階段  呼叫destroy()方法

比較一下Listener和Filter/Servlet的區別

servlet已經介紹過,和他相似的這些你了解嗎?

  • servlet是一種運行服務器端的java應用程式,作業在客戶端請求與服務器回應的中間層,

  • filter是一個可以復用的代碼片段,可以用來轉換HTTP請求、回應和頭資訊,Filter不像Servlet,它不能產生一個請求或者回應,它只是修改對某一資源的請求,或者修改從某一的回應,

  • 從字面上可以看出listener主要用來監聽只用,通過listener可以監聽web服務器中某一個執行動作,并根據其要求作出相應的回應,

  • servlet,filter都是針對url之類的,而listener是針對物件的操作的,

攔截器和過濾器的區別

這塊的東西比較亂,給大家畫個圖

  • 攔截器是基于java的反射機制的,而過濾器是基于函式回呼,
  • 攔截器不依賴與servlet容器,過濾器依賴與servlet容器,
  • 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用,
  • 攔截器可以訪問action背景關系、值堆疊里的物件,而過濾器不能訪問,
  • 在action的生命周期中,攔截器可以多次被呼叫,而過濾器只能在容器初始化時被呼叫一次,
  • 攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器里注入一個service,可以呼叫業務邏輯,

Jsp有哪些內置物件?作用分別是什么?

  • request 用戶端請求,此請求會包含來自GET/POST請求的引數
  • response 網頁傳回用戶端的回應
  • pageContext 網頁的屬性是在這里管理
  • session 與請求有關的會話期
  • application servlet 正在執行的內容
  • out 用來傳送回應的輸出
  • config servlet的構架部件
  • page JSP網頁本身
  • exception 針對錯誤網頁,未捕捉的例外

jsp和servlet的區別、共同點、各自應用的范圍?

JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式,JSP編譯后是“類servlet”,

Servlet和JSP最主要的不同點在于:Servlet的應用邏輯是在Java檔案中,并且完全從表示層中的HTML里分離開來,而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的檔案,

JSP側重于視圖,Servlet主要用于控制邏輯,在struts框架中,JSP位于MVC設計模式的視圖層,而Servlet位于控制層.

tomcat容器是如何創建servlet類實體?用到了什么原理?

當容器啟動時,會讀取在webapps目錄下所有的web應用中的web.xml檔案,然后對xml檔案進行決議,并讀取servlet注冊資訊,

然后,將每個應用中注冊的servlet類都進行加載,并通過反射的方式實體化,(有時候也是在第一次請求時實體化)

在servlet注冊時加上1如果為正數,則在一開始就實體化,如果不寫或為負數,則第一次請求實體化,

如何解決請求和回應的亂碼問題

請求

GET請求:GET請求引數是在地址后面的,我們需要修改tomcat的組態檔,需要在server.xml檔案修改Connector標簽,添加URIEncoding="utf-8"屬性,

POST請求:post請求提交了中文的請求體,服務器決議出現問題,在獲取引數值之前,設定請求的解碼格式,使其和頁面保持一致,

request.setCharacterEncoding("utf-8");

回應

向瀏覽器發送回應的時候,要告訴瀏覽器,我使用的字符集是哪個,瀏覽器就會按照這種方式來解碼,

方法一:

response.setHeader("Content-Type", "text/html;charset=utf-8");

方法二:

response.setContentType("text/html;charset=utf-8");

session、cookie、token都是什么?

首先我們要明白HTTP是一種無狀態協議,怎么理解呢?很簡單

夏洛:大爺,樓上322住的是馬冬梅家吧?
大爺:馬冬什么? 
夏洛:馬冬梅, 
大爺:什么冬梅啊? 
夏洛:馬冬梅啊, 
大爺:馬什么梅?
夏洛:行,大爺你先涼快著吧,

這段對話都熟悉吧,HTTP就是那個大爺,那如果我們就直接把“大爺”放給用戶,用戶不用干別的了,就不停的登錄就行了,

既然“大爺不靠譜”,我們找“大娘”去吧,

哈哈哈,開個玩笑,言歸正傳,

為了解決用戶頻繁登錄的問題,在服務端和客戶端共同維護一個狀態——會話,就是所謂session,我們根據會話id判斷是否是同一用戶,這樣用戶就開心了,

但是服務器可不開心了,因為用戶越來越多,都要把session存在服務器,這對服務器來說是一個巨大的開銷,這是服務器就找來了自己的兄弟幫他分擔(集群部署,負載均衡),

但是問題依然存在,如果兄弟掛了怎么辦,兄弟們之間的資料怎么同步,用戶1把session存放在機器A上,下次訪問時負載均衡到了機器B,完了,找不到,用戶又要罵娘,

這時有人思考,為什么一定要服務端保存呢,讓客戶端自己保存不就好了,所以就誕生了cookie,下一次請求時客戶段把cookie發送給服務器,說我已經登錄了,

但是空口無憑,服務器怎么知道哪個cookie是我發過去的呢?如何驗證成了新的問題,

有人想到了一個辦法,用加密令牌,也就是token,服務器發給客戶端一個令牌,令牌保存加密后id和密鑰,下一次請求時通過headers傳給服務端,由于密鑰別人不知道,只有服務端知道,就實作了驗證,且別人無法偽造,

如果感覺博主講的還不錯,一鍵三連支持一下吧,

更多學習視頻+筆記,PC端看左側「關于作者」,手機端「私信」博主,

MVC與三層架構

三層架構與MVC的目標一致:都是為了解耦和、提高代碼復用,MVC是一種設計模式,而三層架構是一種軟體架構,

MVC

Model 模型

模型負責各個功能的實作(如登錄、增加、洗掉功能),用JavaBean實作,

View 視圖

用戶看到的頁面和與用戶的互動,包含各種表單, 實作視圖用到的技術有html/css/jsp/js等前端技術,

常用的web 容器和開發工具

Controller 控制器

控制器負責將視圖與模型一一對應起來,相當于一個模型分發器,接收請求,并將該請求跳轉(轉發,重定向)到模型進行處理,模型處理完畢后,再通過控制器,回傳給視圖中的請求處,

三層架構

表現層(UI)(web層)、業務邏輯層(BLL)(service層)、資料訪問層(DAL)(dao層) ,再加上物體類別庫(Model)

  • 物體類別庫(Model),在Java中,往往將其稱為Entity物體類,資料庫中用于存放資料,而我們通常選擇會用一個專門的類來抽象出資料表的結構,類的屬性就一對一的對應這表的屬性,一般來說,Model物體類別庫層需要被DAL層,BIL層和UI層參考,

  • 資料訪問層(DAL),主要是存放對資料類的訪問,即對資料庫的添加、洗掉、修改、更新等基本操作,DAL就是根據業務需求,構造SQL陳述句,構造引數,呼叫幫助類,獲取結果,DAL層被BIL層呼叫

  • 業務邏輯層(BLL),BLL層好比是橋梁,將UI表示層與DAL資料訪問層之間聯系起來,所要負責的,就是處理涉及業務邏輯相關的問題,比如在呼叫訪問資料庫之前,先處理資料、判斷資料,

說說你對JSON的理解

JSON是一種輕量級的資料交換格式,它基于標準字串實作,可分為三類資料:

  • 單個資料:有number, string, boolean和null四種型別資料,

  • 多個有序的資料: 陣列,用[]包含起來, 其元素可以是三類資料中的任意一種, 元素之間用,號隔開,

  • 多個無序的資料: 物件用{}包含起來, 其元素必須由key-value組成, key是一個字串, value可以是任意型別資料, key與value之間用:號隔開, 兩個key-value之間用,號隔開,

介面間基于JSON傳輸資料有什么好處?

json之前都是基于xml的傳輸,所以基于xml對比,

  • 簡潔,沒有xml的開閉標簽
  • 檔案更小,傳輸更快
  • 序列化和反序列化的速度高于xml
  • cpu處理json消耗的資源更少

什么是單點登錄

單點登錄的英文名叫做:Single Sign On(簡稱SSO),

起初我們的所有功能都在一個系統,比如登錄,交易,物理,后來有了分布式微服務,按照功能拆分成了多個子服務,那如何實作一處登錄,處處可用呢?

也就是如何用一把鎖,打開你家的所有門?需要解決以下問題:

session共享

  • 全域復制,集群內每個tomcat的session完全同步,這樣會影響集群的性能,
  • hash映射,將ip映射的對應的機器上,也就是某個固定訪問某臺機器,一旦掛了,就會丟資料,
  • 把Session資料放在Redis中,

redis會在【redis篇】更新,想提前了解的小伙伴PC端看左側「關于作者」,手機端「私信」博主,

在單點登錄中,如果cookie被禁用了怎么辦?

單點登錄的原理是后端生成一個sessionID,然后設定到cookie,后面的所有請求瀏覽器都會帶上cookie,然后服務端從cookie里獲取sessionID,再查詢到用戶資訊,

所以,保持登錄的關鍵是通過cookie保存和傳輸的sessionID,其本質是能獲取用戶資訊的資料,除了cookie,還通常使用HTTP請求頭來傳輸,但是這個請求頭瀏覽器不會像cookie一樣自動攜帶,需要手工處理,


以上就是關于「Javaweb」部分總結出的面試題,如果哪里有問題,歡迎大家交流評論!

最后

?今天是堅持刷題更文的第34/100天

?各位的點贊、關注、收藏、評論、訂閱就是一條創作的最大動力

?更多面試題歡迎關注專欄《大廠面試突擊》

為了回饋各位粉絲,禮尚往來,給大家準備了一條多年積累下來的優質資源,包括 學習視頻、面試資料、珍藏電子書等

需要的小伙伴PC端看左側「關于作者」,手機端「私信」博主,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294933.html

標籤:java

上一篇:LeetCode 34. 在排序陣列中查找元素的第一個和最后一個位置 【c++/java詳細題解】

下一篇:從零開始學習Java設計模式 | 結構型模式篇:裝飾者模式

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more