1. 程式人生 > >117道Java面試題及答案(大多都是專案裡面所用到的技術點)

117道Java面試題及答案(大多都是專案裡面所用到的技術點)

1 SpringBoot整合SpringMVC的jar包的名字:

spring-boot-starter-web

2 SpringBoot整合Durid連線池的jar包的名字:

Durid-spring-boot-starter

3 SpringBoot整合JDBC事務的jar包的名字:

spring-boot-starter-jdbc

4 如果查詢所有資料的時候,資料庫有上萬條資料,會不會引發問題?如果引發問題,你感覺會引發哪些問題?

可能會,要看伺服器的效能、網速、客戶的電腦的配置 可能引發的問題有 a 伺服器崩了,資料量過大 b
網速慢,資料無法傳輸到客戶端 c 客戶端瀏覽器掛了

5 瀏覽器的執行使用記憶體了嗎?

使用記憶體執行

6 ajax可以執行下載嗎?

下載需要同步,而ajax是非同步的,所以無法下載資源

7 跨域請求報錯:

Access-Control-Allow-Origin

8 什麼是跨域?

跨域是指跨域名的訪問

9 跨域引起的原因?為什麼會引起跨域

瀏覽器的同源策略引起跨域問題
域名不同,子域名不同、埠不同、協議不同、ip和域名都會引起跨域

10 跨域問題的解決方案

我們這裡會採用nginx搭建靜態頁面伺服器+cors的跨域方案
a. jsonp–> 最早的跨域解決方案,它的特點利用script標籤不受限,進行跨域訪問,但是它只能傳送get請求,而且必須提供getMapping的方法
b. nginx–> 反向代理,解決跨域問題
c. cors–>當下的 標準的解決方案,它是w3c頒佈的規範

11 現在goods.html頁面沒有執行在伺服器上,所以還是無法請求goods-management系統,那如何解決呢?

答:將靜態HTML部署到伺服器上
* tomcat
* nginx(最專業)

12靜態資源就應該部署在nginx伺服器上,哪些資源代表是靜態資源?

HTML CSS JS img/png/gif/jpg…

13 什麼是cors?

CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。
CORS,跨域資源共享,是w3c組織的標準
他要求瀏覽器和伺服器必須同時支援
• 瀏覽器:目前所有的瀏覽器都支援
•伺服器:服務需要通過Filter過濾器進行處理

14 CORS的優缺點有哪些?

答: •優點:
1.可以自定義請求的方法
2.可以限制訪問的ip地址 •缺點:
1.可能會產生額外的請求

15 什麼是CORS的簡單請求?

答: 簡單請求: •head
•get
•post •
簡單請求只需要 傳送一次請求即可

16,什麼是CORS的複雜請求?

答:複雜請求:
•put
•delete
•複雜請求會先發送一次預檢請求,請求伺服器是否受理該請求,如果受理,再發送正式請求

17 如何理解“跨域不一定會引起跨域問題”這句話?

答:此處應該分兩層理解 第一層:跨域沒有引起跨域問題,比如script的src、img標籤的src
第二層:跨域引起了跨域問題,ajax請求引起跨域問題

18 cors的解決方案

在config目錄中編寫一個配置類,並且註冊CorsFilter:

19 nginx搭建靜態資源伺服器

修改nginx的config檔案

20為什麼在mock.js中寫mock程式碼的時候,不需要引入mock官方檔案?

答:因為頁面已經引入了mock-min.js官方檔案,所以我們只是將mock.js寫在一個獨立的檔案中了,這個檔案不需要再次匯入mock-min.js

21

A.mock.js : @ID身份證 @integer(xxx,xxx)模擬範圍 @email模擬郵箱 @url模擬地址
@cname中文名字 @csentense 模擬中文句子

22 能不能像bos專案一樣,使用域名訪問pingxixi專案?

步驟: 1 修改host檔案 127.0.0.1 www.jd.com 2 修改nginx/conf/nginx.conf #
windows檔案伺服器配置
# 搭建前後端分離頁面伺服器
server { listen 80; server_name www.taobao.com;

#瀏覽器開啟路徑:localhost:8094(listen埠)/location設定的路徑/檔案.字尾
location ~ /.*\.(html|js|css|png|jpg|gif)$ {
	#html頁面儲存在電腦的地址
	root  D:\VueWorkspace\666\pingxixi;
}
 }

23當我們改成www.jd.com的時候無法訪問,最後的解決方案:

瀏覽器快取問題

24 Session:

用在jsp頁面中,通過el表示式獲取,而現在前後端分離的專案中,只要html頁面,沒有jsp頁面,所以無法使用session傳遞資料

25 什麼是localStorage?

在HTML5中,新加入了一個localStorage特性,這個特性主要是用來作為本地儲存來使用的,解決了cookie儲存空間不足的問題(cookie中每條cookie的儲存空間為4k),localStorage中一般瀏覽器支援的是5M大小,這個在不同的瀏覽器中localStorage會有所不同。

26 localStorage的優缺點

優勢一:localStorage拓展了cookie的4K限制
優勢二:目前瀏覽器都支援
劣勢:所有的瀏覽器中都會把localStorage的值型別限定為string型別,使用json的時候,需要eval強轉

27 session和token有什麼區別?

答:session和token兩者沒有關係
session是jsp的內建物件之一,代表著瀏覽器和伺服器的一次會話,在這次會話中包含多次的request和response,session是由tomcat自動幫我們建立,自動銷燬,在頁面使用的時候,需要藉助el表示式和jstl表示式
token就是一個UUID的隨機字串,但是在jwt中這個字串不是完全隨機的,它是根據當前登入使用者的資訊隨機生成的,是有規律的,token
是由伺服器的Controller手動生成的

相同點 session可以通過session.setAttribute() 儲存當前登入使用者資訊
jwt的token裡面也儲存了使用者的資訊(加密處理)

28、5M是4K的多少倍

5*1024/4

29 元件使用的注意要點:

A 元件名字一定要小寫 B 元件的屬性data,一定是一個方法,而且方法必須要有返回值 C
元件必須要有根標籤,而且只能有一個根標籤 D 父元件可以給子元件傳值,通過:props是的方式將父元件的值傳遞進來 E
子元件可以給父子間傳值:通過$emit的方式傳值
1 講講localStorage的用法(與cookie比較)
答:localStorage是本地儲存,是H5新特性,最大可以儲存5M,目前所有瀏覽器都支援
localStorage存json資料,是以string型別儲存,所以使用的時候需要eval強轉
localStorage是瀏覽器中的js物件

30 JSP的九大內建物件:

答: 1 out :jsp頁面輸出 2 page :當前頁面 3 pageContext:編譯之後的當前頁面(上下文) 4
request:請求 5 response:響應 6 session:會話 7
application(ServletContext):當tomcat啟動的時候,自動建立,當tomcat銷燬的時候,自動銷燬,資源/資訊/資料
在整個tomcat中共享 8 config:獲取配置在web.xml中的標籤中的子標籤的值 9
exception:異常

31 Servlet/Filter的生命週期–Struts1(Servlet),Struts2(Filter),SpringMVC(DispatcherServlet)----MVC框架

答: 1 當啟動tomcat的時候,是不會建立Servlet的
2 當第一次訪問Servlet的時候,才會呼叫Servlet的init方法初始化Servlet
3 servlet會接收頁面請求,根據請求呼叫doget或者dopost方法,處理業務 4 處理完成請求,響應給客戶端
5 此時servlet不會被銷燬,它會進入等待狀態,等待下一次請求
6 當tomcat停止的時候,自動銷燬servlet

32 request/response/session/application的底層用的什麼資料結構?

答:Map集合

33 JAVA中的資料結構有哪些?各有什麼特點?

答:List set map List:有序可重複集合 set:無序不重複集合 map:鍵值對集合(鍵不能重複,值可以重複)

34 ArrayList和LinkedList有什麼區別?
答:

ArrayList 是基於動態陣列的資料結構,LinkedList 是基於連結串列的資料結構; 對於隨機訪問 get 和
set,ArrayList 較優,因為 LinkedList 要移動指標; 對於新增和刪除操作 add 和 remove,LinedList
較優,因為 ArrayList 要移動資料。

35 HashMap和HashTable的區別?

答:HashTable是執行緒安全的,它的每個方法,都是通過sychronizd修飾的,問題:效率低下
HashMap非執行緒安全,但是效率比較高
HashMap 允許空鍵值,Hashtable 不允許; HashMap 繼承自 AbstractMap,Hashtable 繼承自 Dictionary 類,兩者都實現了 Map 介面;
HashMap 的方法不是同步的,Hashtable 的方法是同步的。

36 ArrayList和Vector的區別

答:Vector是執行緒安全的
ArrayList是非執行緒安全

37 能夠說出spu和sku的區別(畫圖)

比如手機 :基本資訊spu 具體手機資訊sku
sku是手機的規格和規格選項的排列組合
手機基本資訊表: spu表
|id 名稱 尺寸 型號 材質| |
|1 iphone 5.5 8plus 玻璃機身|

Sku 規格: 顏色 紅 黑 金
記憶體 64 128 256
網路制式 全網通 雙網通 電信定製版
sku表:規格排列組合 skuid spuid 顏色 記憶體 庫存 價格
商品詳情針對的是SKU,商品評價針對的是SPU

38,在vue中,如何獲取位址列的引數資訊?

location.search

39
所有的input文字框(text/password/checkbox/radio/select/textarea/)繫結資料的時候,只能使用v-model

40, /\d+/ 和 /^\d+$/ 的區別?

答:第一個是模糊匹配,只要包含了數字,就可以 通過,比如:11.11 11!11 11#11 ,都可以通過
第二個是精確查詢,^表示精確開始,$表示精確結束,比如11!11 11#11 都不會通過,只有純數字可以通過

41, 關於購買數量 的功能實現

實現文字框,輸入值,值必須是大於0的數字
1)判斷輸入的值必須是數字
如果是數字,就通過
如果不是數字,就給出提醒,並把預設值設定為1
2)判斷數值是否大於0 如果大於0,直接通過
如果不大於0,給出提醒,並將預設值設定為1

42、bug:檢索方式

方法一:精確查詢
let rule = /^\d+$/ // 寫法二:精確匹配,例如11.11   11!11  11$11  都通不過,只能純數字, 11   22
方法二:模糊查詢
let rule = /\d+/ // 寫法一:模糊匹配 ,例如 11.11   11!11  11$11 都可以匹配通過

43, 商品評價–前置步驟

實現步驟: 1、mock模擬資料 2、api.js 中發起ajax請求,請求資料----由於需要分頁,所以需要請求引數
1)需要的引數有:spuid、limit/per_page、page、sort_by=id、sort_way=desc
axios.get("/web-service/comments/"+spuid+"?limit="+per_page+"&page="+page+"&sort_by=id&sort_way=desc")

44、html頁面獲取資料

1)獲取商品評論資料–根據spuid
當前在goods.html頁面中一直使用的是skuid,未曾使用過spuid
2)通過頁面已經提供的sku的資料,獲取對應的spu的資料
在模擬goodsInfo(sku的完整資訊)資料的時候,由於sku是屬於spu的,所以在sku中,包含了spuid

3)實現方案:根據sku查詢goodsInfo,在goodsInfo中包含了spuid,拿到了spuid,就可以查詢評論資訊

45, 你學過js?那你瞭解js中的回撥地獄/回撥煉獄嗎?
答:A–>B–>C–>D–>E

getA().then(res=>{
     getB().then(res=>{
	getC().then(res=>{
           getD().then(res=>{
              getE().then(res=>{
                 ...........
              })
           })
        })
     })
})

上述程式碼在前端中就會引起回撥地獄問題 上述程式碼的特點:
A、傳送的ajax請求,等一個方法執行完,才可以執行另外一個方法
B、在一個ajax內部繼續發出ajax請求

46, 如何解決回撥地獄問題

答:鏈式程式設計:物件.物件.方法.物件.方法 採用鏈式程式設計的方式解決回撥地獄問題

getA().then(res={
    return getB()
}).then(res=>{
    return getC()
}).then(res=>{
   return getD()
})......

47, Promise

:axios的底層封裝的是Promise,原生髮送ajax的

48, js從陣列中刪除一個元素使用的方法是

:splice(k,z) k起始索引 z刪除個數

49, 購物車實現步驟

4.1 給"加入購物車"按鈕提供點選事件

4.2 在vue中編寫 addToCart方法,將商品加入購物車 1)準備資料:新增至購物車的商品資料

2)從localStorage中取出cart資訊

3)如果取出的cart資料為空,那就直接把資訊新增進購物車

4)如果取出的cart資料不為空,表明購物車中已經存在商品
判斷當前新增商品是否在購物車中
如果新增商品在購物車中,只新增數量
如果新增商品不在購物車中,直接新增商品

50, 進入購物車flow1.html頁面

1 複選框 修改頁面HTML程式碼

2 列表顯示 取出cart資料,迴圈遍歷

3 修改數量 編寫兩個方法就可以實現
4 動態計算每個商品的總價 由於vue具有雙向繫結的功能,自動實現
5 計算購物總金額
需要使用計算屬性:計算屬性的本質是一個方法,只是使用的時候,像屬性

6 刪除購物車資訊

51, vue的8個生命週期–以及每個週期的作用
建立前 BeforeCreated
建立後 created
掛載前 雙向繫結之前 BeforeMounted
掛載後 mounted
更新前 beforeUpdated
更新後 updated
銷燬前 beforeDestory
銷燬後 destoryed
beforeCreate:可以載入頁面
created:可以去訪問對方的埠
mounted:只要展示頁面都在這個方法裡面寫
updated:增刪改查扔這裡面

beforeCreate:建立之前,此時data和methods尚未初始化

created:此時,data和methods已經建立好了,可以被訪問了

beforeMount:掛載模板之前,此時,頁面還沒有被渲染到瀏覽器中

mounted:此時,頁面剛被渲染出來,如果要操作DOM元素,最好在這個階段

52, localStorage和sessionStorage的區別

答:localStorage是永久儲存,只有手動刪除,才會刪除資料
sessionStorage是會話,當瀏覽器關閉,自動清空資料

53, 新增收件人地址

3.1 將地址提交到後臺–ajax,並接受新地址的id

3.2 回顯地址–如果此處繼續通過ajax查詢所有的話,那我們就很難去確認到底剛剛新增的排在哪個位置?

3.3 預設選中新增地址

54,JAVA的13大核心技術:

JDBC、jsp、servlet、xml、jms、javamail、rmi

55,什麼是RMI:

它能夠讓在某個 Java 虛擬機器上的物件呼叫另一個 Java 虛擬機器中的物件上的方法

有兩臺電腦A和B,兩臺電腦都安裝了JDK,A電腦的JAVA虛擬機器能否訪問B電腦JAVA虛擬機器上的物件的方法

56、

Hessian只支援JAVA語言開發,不支援其他語言

57、HttpClient和RestTemplate的區別嗎?
答:

相同點:都是遠端呼叫技術,都支援呼叫restful風格的介面
不同點:HttpClient是apache,而RestTemplate是Spring的,是Spring底層自己封裝的

58、SpringCloud提供了哪些功能?

答:- 配置管理,

  • 服務發現,
  • 智慧路由,
  • 負載均衡:ribbon
  • 熔斷器:Hystrix
  • 控制匯流排,
  • 叢集狀態

59、版本區別

  • snapshot:此jar包沒有經過測試,如果遇到bug,不要驚訝

  • RC:此jar包經過了充分測試,但是可能還有很多bug

  • beta:上線前的測試版本

  • release:正式版,

60 ,不通過建構函式也能建立物件嗎?

答案:yes 解析:Java建立物件的幾種方式(重要):
(1) 用new語句建立物件,這是最常見的建立物件的方法。
(2) 運用反射手段,呼叫java.lang.Class或者java.lang.reflect.Constructor類的newInstance()例項方法。
(3) 呼叫物件的clone()方法。
(4) 運用反序列化手段,呼叫java.io.ObjectInputStream物件的readObject()方法。
(1)和(2)都會明確的顯式的呼叫建構函式 ;
(3)是在記憶體上對已有物件的影印,所以不會呼叫建構函式 ;
(4)是從檔案中還原類的物件,也不會呼叫建構函式。


61,集中式架構/單體架構 的 優缺點

當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
優點: 編寫專案簡單,部署方便
缺點:

  • 程式碼耦合,開發維護困難
  • 單點容錯率低,併發能力差

62、垂直拆分的優缺點-----涉及到多個系統的互相呼叫

  • 系統拆分實現了流量分擔,一定程度上解決了併發問題

  • 系統間相互獨立

  • 方便水平擴充套件,負載均衡,容錯率提高

    缺點:

    • 服務之間相互呼叫,如果某個服務的埠或者ip地址發生改變,呼叫的系統得手動改變
    • 搭建叢集之後,實現負載均衡比較複雜

63、分散式服務的優缺點

優點:

  • 將基礎服務/公共介面 進行了抽取,系統間相互呼叫,提高了程式碼複用和開發效率
  • 缺點:
    • 系統間耦合度變高,呼叫關係錯綜複雜,難以維護
    • 搭建叢集之後,負載均衡比較難實現

64、服務治理:當系統拆成分散式服務之後,服務較多,服務間相互呼叫比較複雜,這時候就需要服務治理
服務治理:

Dubbo、SpringCloud(Eureka、consul、zookeeper註冊中心)

OOP:面向物件程式設計

AOP:面向切面程式設計

SOA:面向服務程式設計

```服務治理框架:dubbo ``
服務治理要做什麼?

  • 服務註冊中心,實現服務自動註冊和服務自動發現(無需人為記錄服務地址)
  • 服務自動訂閱,服務列表自動推送,服務呼叫透明化(無需關心依賴關係)
  • 自動監控服務狀態(人為控制服務狀態)`

缺點

  • 服務間會有依賴關係,一旦某個環節出錯會影響較大
  • 服務關係複雜,運維、測試部署困難,不符合DevOps思想(docker)

65、微服務特點:

  • 單一職責:一個服務只負責處理一件事件
  • 微:小,小到只是一個對使用者的crud操作
  • 獨立
    • 團隊獨立
    • 技術獨立
    • 資料庫獨立
    • 前後端獨立
    • 部署獨立

66,2-5都會存在多個服務,多個服務間呼叫的方式有哪些?

  • RPC:hessian、dubbo
  • http:httpclient、okclient

RPC和http之間的區別?

  • 速度來看,RPC要比http更快,雖然底層都是socket,但是http協議的資訊往往比較臃腫,傳輸的資料比較多,速度相對慢

  • 難度來看,RPC實現較為複雜,啟動需要消耗更多的記憶體和CPU資源,http相對比較簡單

  • 靈活性來看,http更勝一籌,因為它不關心實現細節,跨平臺、跨語言。http只需要提供restful風格的介面,

    RPC要求伺服器和客戶端都採用相同的框架

67,-一個JAVA虛擬機器上的類能否呼叫另外一個JAVA虛擬機器上的類中的方法?

答:可以,使用RMI,Hessian

68、模擬微服務的服務端和客戶端:

遠端獲取使用者資訊

69、yaml語法:

  1. 大小寫敏感
  2. 使用縮排表示層級關係
  3. 禁止使用tab縮排,只能使用空格鍵
  4. 縮排長度沒有限制,只要元素對齊就表示這些元素屬於一個層級
  5. 使用#表示註釋
  6. 字串可以不用引號標註

70 概括一下就是分散式服務必然要面臨的問題:

  • 服務管理
    • 如何自動註冊和發現服務
    • 如何實現服務狀態的監管
    • 如何實現動態路由
  • 服務如何實現負載均衡
  • 服務如何解決容災問題
  • 服務如何實現統一配置

71、伺服器如何進行容災?

答:叢集 + 負載均衡

72、eureka註冊中心的引入的jar包的名字叫啥?

答:spring-cloud-starter-netfilx-eureka-server

73、eureka中的服務引入的jar包的名字

答:spring-cloud-starter-netf

74、如何設定應用在eureka註冊中心的名字?

答:通過Spring.application.name設定

75 如何實現服務的高可用

答:叢集 + 負載均衡

76 全域性配置私服和區域性配置私服的區別

1、全域性配置私服對所有專案都生效

2、而區域性配置私服只對當前專案生效

3、全域性私服只會在全域性配置的私服地址中查詢,找不到,直接錯誤;

4、區域性私服找不到對應的專案,還會去全域性私服中或者中央倉庫中查詢

77,搭建Eureka叢集-高可用的Eureka

步驟:

1、啟動兩個Eureka,將A註冊到B,將B註冊到A

2、主要是修改Eureka的埠號+register-with-eureka

78,Eureka的服務續約(心跳)

服務預設30s內向eureka註冊中心傳送心跳,代表它還活著,如果90s內沒有發出心跳,eureka會將該服務保護起來,暫時不提供服務,預設保護15分鐘,如果15分鐘之內,收到心跳了,繼續提供服務,如果15分鐘之內,沒有收到心跳,則移除該服務

s

答:當服務註冊到eureka之後,每隔30s需要向eureka註冊中心傳送心跳(續約renew),表示我還活著,當90s內沒有傳送心跳,表明eureka任務此服務暫時無法向外提供服務,就把它保護起來,然後在接下來的15分以內,eureka會不斷的請求這個服務,如果得到正常的響應,就把它叫出來,繼續提供服務,如果15分鐘以內,eureka還是收不到響應,那就把它移除服務列表

79,eureka伺服器停止之後,服務呼叫方和服務消費方會報錯,原因是啥?

因為有心跳機制,註冊中心掛了,服務傳送心跳就會失敗,導致報錯

80,當停止eureka註冊中心之後,服務消費方還可以使用服務提供方嗎?

答:可以,因為有快取

81, 服務提供方/服務消費方 是何時去eureka註冊中心獲取其他服務的ip地址和埠號的?

答:結論:第一次啟動的30以內,去eureka註冊中心拉取其他服務快取到本地

82 如果 停止eureka註冊中心之後,修改服務提供方的埠,此時服務呼叫方就無法請求服務

83, 在不停止eureka註冊中心的情況下,如果修改服務提供方的埠,那此時服務呼叫方會收到響應嗎?

答: 需要等待幾分鐘,可以繼續提供新埠的服務

84、eureka中是以雙層map結構(巢狀map)儲存服務資訊

82,Eureka加強–替代技術consul、zookeeper(https://www.cnblogs.com/shanyou/p/6286207.html)
85,熔斷應用的場景是什麼?

  • 服務宕機—

  • 服務超時響應----hystrix的預設響應時間必須在1s以內

86,修改負載均衡策略:

輪詢、隨機

,87, 為什麼要學習Eureka

  1. 由於分散式服務的架構下,服務太多、關係錯綜複雜、難以維護,所以需要服務治理,而Eureka就是服務治理框架

88, 你說說你瞭解服務治理框架有哪些?

  1. Eureka、consul、zookeeper

89,你為什麼偏偏選擇eureka

  1. 專案經理說這個是最簡單的,所以就選擇了

90, eureka有什麼缺點

  1. 當前已經閉源,可能會有bug,官方不再提供維護
  2. 他強調的是AP(可用性和分割槽容錯性),放棄了一致性(C)

91,你為什麼要學習ribbon

  1. 叢集之後,一定要負載均衡,才可以發揮叢集的作用

92, ribbon重試機制

  • 概念:當叢集中某些節點宕機了,負載均衡的時候,正好將請求打在了宕機節點上,就獲取不到資料了,由於eureka追求的是可用性,所以立刻會返回錯誤資訊,這是不合理的,所以通過重試,可以重新請求其他節點,返回正確的資料

93,為什麼要學習熔斷器?

  1. 防止某個具體服務全部宕機了,拖垮整個系統,這也算是一種對使用者的補償方式。

94,你的專案是如何使用jwt的?在這裡插入圖片描述
總:

在專案中,我們使用jwt的場景有:
場景一:登入的時候,生成jwt
場景二:請求的時候,驗證jwt
分:場景一:當用戶輸入使用者名稱和密碼之後,會將資訊傳送到伺服器,伺服器派發auth伺服器進行處理,驗證使用者名稱和密碼是否正確,如果正確,則建立jwt,返回給客戶端
場景二:客戶端每次請求的時候,在請求頭header中攜帶jwt,請求到達zuul的時候,對jwt進行校驗,如果校驗通過,則放心,如果校驗失敗,則攔截

95,比較shiro和jwt的區別?

答:相同點:都是進行許可權校驗 不同點:1 shiro是一個功能齊全的認證、授權、加密、會話管理的框架,而jwt只是一個生成token的機制
2 shrio提供的是雜湊演算法進行加密,而jwt採用base64編碼/ 加密,可以解密
兩者可以結合使用!SpringBoot+shiro+jwt進行許可權校驗

96
在這裡插入圖片描述
97,在這裡插入圖片描述
98,base64編碼/加密的原理

答:將鍵盤輸入字元對應的ascii碼值,轉成對應的base64編碼表中的值

  過程:將鍵盤輸入字元對應的ascii碼值,轉成8位二進位制的值,
  然後在每6個一組劃分二進位制,計算每組的二進位制對應的十進位制的值,
  找出對應的base64編碼表中的值,即可
  1. jwt加密的原理是什麼?

答:jwt分為三段:head、payload、signature,每段都是通過base64加密的

  1. 雜湊演算法有哪些?

答:MD5,SHA家族,不可逆

  1. 除了雜湊演算法以外,你還知道哪些加密演算法?

答:base64,可逆

  1. zuul:閘道器
  1. 動態路由–直接在yml中配置
  2. 許可權控制–通過ZuulFilter進行控制
  3. 負載均衡

103 電商模式

  • B2B:商家對商家,阿里巴巴
  • C2C:個人對個人,鹹魚、瓜子二手車
  • B2C:商家對個人,小米商城、蘋果商城
  • O2O:線上對線下,美團、餓了麼、滴滴、摩拜單車、ofo
  • P2P:線上金融,螞蟻金服

104 電商專業術語

  • PV:page views ,頁面的瀏覽量
  • UV:unique vistors ,獨立訪客
  • QPS:伺服器秒殺處理請求的數量
  • 頻寬:由PV計算得到頻寬
  • 計算伺服器數量 :根據二八原則,80%的請求集中在20%的時間內處理完成,然後在結合QPS,估算出伺服器數量

105、vue是什麼?為什麼選擇vue?Vue的好處是什麼?

答:Vue是一個js的前端框架,是一個輕量級漸進式的框架,容易上手,能夠輕鬆整合其他框架
Vue的特點:雙向資料繫結,當改變model層資料的時候,檢視層也會發生改變;
當改變檢視層的時候,model層的資料也會發生改變

106、MVVM是什麼?它與MVC有什麼區別?你瞭解哪些MVVM框架

答:1, M:model 模型層/資料層
V:View 檢視層
VM:View Model 將model和view關聯的層, 雙向繫結層

2 MVC沒有雙向繫結功能,而MVVM具有雙向繫結功能
3 MVVM框架:angular 、 react、vue

107、Vue的生命週期?Vue的鉤子函式?
在這裡插入圖片描述

108、在Vue中,做文字渲染的時候,如何保證資料原樣輸出?----在:vue中,如何進行資料渲染?

答:資料渲染:顯示資料
v-html:解析樣式
v-text:不解析樣式
{{}}插值表示式:直接顯示資料,它會產生閃爍問題,而v-html和v-text不會引起閃爍問題

109、Vue中methods和computed有什麼區別?應用場景是什麼?

答: methods:方法,函式,通過事件繫結呼叫;每次都是重新計算
computed:計算屬性,本質是方法,但是以屬性的方式使用,直接將方法名寫在插值表示式中 {{totalPrice}};
可以使用快取,提高效率
舉例:當要計算兩個文字框中的值:一個文字框是5 一個文字框是6
如果使用methods,通過事件觸發的話,不管文字框中的值是否變化,都會重新計算
如果使用computed,如果文字框的值沒有變化,就直接從快取中取出值,不會重新計算

110、Vue如何處理原生的DOM事件?

答:6.1 DOM:Document Object model 文件物件模型
HTML DOM 定義了訪問和操作 HTML 文件的標準方法。 DOM 將 HTML 文件表達為樹結構。
6.2 DOM事件:onclick、onchange、onmouseover、onmouseout、onkeyup、onkeydown…

6.3 Vue處理DOM事件的方式:v-on,簡寫@,@click、@change、@mouseover、@mouseout、@keyup、@keydown...

6.4 原生DOM事件:vue處理原生DOM事件,主要是通過$event處理,$event相當於事件源
    事件源:按下滑鼠觸發某個事件,事件源就是按下滑鼠

112、什麼是js的冒泡?Vue是如何解決冒泡的?

答:js冒泡:在父元素中,有多級子元素的時候,他們都作用力mouseover事件,那麼觸發最內層mouseover事件的時候,會自內向外依次觸發每個元素的mouseover事件
js處理冒泡:event.stopPropagation()
vue處理冒泡:阻止預設事件,事件.stop,例如:@click.stop="" @change.stop=""

113、Vue中有哪些事件修飾符?各個功能是什麼?

答:事件修飾符: .stop 阻止冒泡事件
.prevent 阻止預設事件

114、什麼是js的回撥地獄?Vue如何解決回撥地獄?

答:回撥地獄非同步請求引起的問題:在A ajax中,呼叫B ajax,B ajax使用A ajax返回值,就容易回撥地獄
getA().then(res=>{
getB(res.data.a).then(res=>{
getC(res.data.b).then(res=>{
getD(res.data.c).then(res=>{
// …
})
})
})
})

在Vue中了,提供Promise技術,採用鏈式程式設計方式解決回撥地獄問題

115、Vue中父子元件是如何傳值的?

答:

父向子傳值:例如,將傳一個num到子元件中
在子元件中定義props:[‘num’],宣告變數,父元件呼叫子元件的時候通過:num=“num” 將值傳給子元件

子向父傳值:無法直接傳值,需要通過$emit的方式回撥父元件中的值,例如,將子元件的num傳給父元件,
    需要通過this.$emit("outshow",num)傳值,此時,outshow方法名,num是outshow方法的引數
    父元件呼叫子元件的時候,通過@outshow="mainshow"接受子元件的值

作業:父子元件傳值的程式碼敲一遍

116、Vue中是雙向資料繫結是如何實現的?

答:雙向資料繫結只存在於form表單元素中
通過v-model的方式,實現雙向資料繫結

117、this關鍵字的用法

答:在vue的html標籤中,不可以使用this關鍵字,直接訪問data中的變數
在new Vue物件裡面,訪問data中的屬性,需要使用this關鍵字