成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

字節(jié)國(guó)際支付十連問

開發(fā) 項(xiàng)目管理
第四次揮手(ACK=1,seq=u+1,ack=w+1?),客戶端接收到來自服務(wù)器端的關(guān)閉請(qǐng)求,發(fā)送一個(gè)確認(rèn)包,并進(jìn)入TIME_WAIT?狀態(tài),等待了某個(gè)固定時(shí)間(兩個(gè)最大段生命周期,2MSL,2 Maximum Segment Lifetime?)之后,沒有收到服務(wù)器端的ACK? ,認(rèn)為服務(wù)器端已經(jīng)正常關(guān)閉連接,于是自己也關(guān)閉連接,進(jìn)入CLOSED ?狀態(tài)。服務(wù)器端接收到這個(gè)確認(rèn)包之后,關(guān)閉

前言

大家好,我是田螺。

之前有位讀者去字節(jié)面試,面的是國(guó)際支付部門,他憑記憶,回憶被問到的一些面試真題。于是,我整理了比較全的答案,希望對(duì)大家找工作有幫助呀,加油~

圖片

1. 聊聊工作中,你是如何設(shè)計(jì)數(shù)據(jù)庫(kù)表的

  • 命名規(guī)范
  • 選擇合適的字段類型
  • 主鍵設(shè)計(jì)合理
  • 選擇合適的字段長(zhǎng)度
  • 優(yōu)先考慮邏輯刪除,而不是物理刪除
  • 每個(gè)表必備的幾個(gè)字段(如create_time和update_time等)
  • 一張表的字段不宜過多
  • 盡可能使用not null定義字段
  • 設(shè)計(jì)表時(shí),評(píng)估哪些字段需要加索引
  • 不需要嚴(yán)格遵守3NF,通過業(yè)務(wù)字段冗余來減少表關(guān)聯(lián)
  • 避免使用MySQL保留字
  • 不搞外鍵關(guān)聯(lián),一般都在代碼維護(hù)
  • 一般都選擇INNODB存儲(chǔ)引擎
  • 選擇合適統(tǒng)一的字符集。
  • 如果你的數(shù)據(jù)庫(kù)字段是枚舉類型的,需要在comment注釋清楚
  • 時(shí)間類型選擇恰當(dāng)
  • 不建議使用Stored procedure(包括存儲(chǔ)過程,觸發(fā)器) 。
  • 1:N關(guān)系的設(shè)計(jì)
  • 大字段如何設(shè)計(jì)
  • 考慮是否需要分庫(kù)分表
  • 索引的合理設(shè)計(jì)

2.什么是三范式?你做過違反三范式的設(shè)計(jì)嘛

  • 第一范式:對(duì)屬性的原子性,要求屬性具有原子性,不可再分解;
  • 第二范式:對(duì)記錄的唯一性,要求記錄有唯一標(biāo)識(shí),即實(shí)體的唯一性,即不存在部分依賴;
  • 第三方式:對(duì)字段的冗余性,要求任何字段不能由其他字段派生出來,它要求字段沒有冗余,即不存在傳遞依賴。

我們?cè)O(shè)計(jì)表及其字段之間的關(guān)系, 應(yīng)盡量滿足第三范式。但是有時(shí)候,可以適當(dāng)冗余,來提高效率

3. TCP的四次揮手?三次揮手行不行

圖片

  • 第一次揮手(FIN=1,seq=u?),發(fā)送完畢后,客戶端進(jìn)入FIN_WAIT_1狀態(tài)
  • 第二次揮手(ACK=1,ack=u+1,seq =v?),發(fā)送完畢后,服務(wù)器端進(jìn)入CLOSE_WAIT?狀態(tài),客戶端接收到這個(gè)確認(rèn)包之后,進(jìn)入FIN_WAIT_2狀態(tài)
  • 第三次揮手(FIN=1,ACK=1,seq=w,ack=u+1?),發(fā)送完畢后,服務(wù)器端進(jìn)入LAST_ACK?狀態(tài),等待來自客戶端的最后一個(gè)ACK。
  • 第四次揮手(ACK=1,seq=u+1,ack=w+1?),客戶端接收到來自服務(wù)器端的關(guān)閉請(qǐng)求,發(fā)送一個(gè)確認(rèn)包,并進(jìn)入TIME_WAIT?狀態(tài),等待了某個(gè)固定時(shí)間(兩個(gè)最大段生命周期,2MSL,2 Maximum Segment Lifetime?)之后,沒有收到服務(wù)器端的ACK? ,認(rèn)為服務(wù)器端已經(jīng)正常關(guān)閉連接,于是自己也關(guān)閉連接,進(jìn)入CLOSED ?狀態(tài)。服務(wù)器端接收到這個(gè)確認(rèn)包之后,關(guān)閉連接,進(jìn)入CLOSED狀態(tài)。

TCP為什么需要四次揮手?三次行不行呢?

  • 舉個(gè)生活的例子吧,假設(shè)小明和小紅打電話聊天,通話差不多要結(jié)束時(shí):
  • 小紅說,“我沒啥要說的了”。小明回答,“我知道了”。但是小明可能還有要說的話,小紅不能要求小明跟著自己的節(jié)奏結(jié)束通話,于是小明可能又嘰嘰歪歪說了一通,最后小明說“我說完了”,小紅回答“知道了”,這樣通話才算結(jié)束。

圖片

4. 進(jìn)程線程的區(qū)別,打開迅雷是開了個(gè)進(jìn)程嘛。

  • 進(jìn)程是運(yùn)行中的應(yīng)用程序,線程是進(jìn)程的內(nèi)部的一個(gè)執(zhí)行序列
  • 進(jìn)程是資源分配的最小單位,線程是CPU調(diào)度的最小單位。
  • 一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級(jí)進(jìn)程,多個(gè)線程共享進(jìn)程的資源
  • 進(jìn)程間切換代價(jià)大,線程間切換代價(jià)小
  • 進(jìn)程擁有資源多,線程擁有資源少地址
  • 進(jìn)程是存在地址空間的,而線程本身無地址空間,線程的地址空間是包含在進(jìn)程中的舉個(gè)例子:

你打開QQ,開了一個(gè)進(jìn)程;打開了迅雷,也開了一個(gè)進(jìn)程。

在QQ的這個(gè)進(jìn)程里,傳輸文字開一個(gè)線程、傳輸語(yǔ)音開了一個(gè)線程、彈出對(duì)話框又開了一個(gè)線程。

所以運(yùn)行某個(gè)軟件,相當(dāng)于開了一個(gè)進(jìn)程。在這個(gè)軟件運(yùn)行的過程里(在這個(gè)進(jìn)程里),多個(gè)工作支撐的完成QQ的運(yùn)行,那么這“多個(gè)工作”分別有一個(gè)線程。

所以一個(gè)進(jìn)程管著多個(gè)線程。

通俗的講:“進(jìn)程是爹媽,管著眾多的線程兒子”...

5. 進(jìn)程是如何通訊的?

進(jìn)程間的通信方式有這幾種:

  • 管道
  • 消息隊(duì)列
  • 共享內(nèi)存
  • 信號(hào)量
  • 信號(hào)

每個(gè)進(jìn)程的用戶地址空間都是相互獨(dú)立、不能互相訪問的。而內(nèi)核空間則是每個(gè)進(jìn)程都共享的,因此進(jìn)程之間要通信必須通過內(nèi)核。

  • 管道:它的本質(zhì)是內(nèi)核里面的一串緩存。它傳輸數(shù)據(jù)是單向的,這種通信方式效率低,不適合進(jìn)程間頻繁地交換數(shù)據(jù)。比如我們寫linux?命令時(shí),ps -ef | grep java?這個(gè)「|」豎線就是一個(gè)匿名管道。
  • 消息隊(duì)列:它是保存在內(nèi)核中的消息鏈表。消息的發(fā)送方和接收方要約定好消息體的數(shù)據(jù)類型。有了消息隊(duì)列,兩個(gè)進(jìn)程之間的通信就像平時(shí)發(fā)郵件一樣,你來一封我一封。但是它也有不足,通信不及時(shí),二是附件也有大小限制。
  • 共享內(nèi)存:就是拿出一塊虛擬地址空間來,映射到相同的物理內(nèi)存中,節(jié)省了用戶態(tài)與內(nèi)核態(tài)之間切換的開銷。
  • 信號(hào)量:它其實(shí)是一個(gè)整型的計(jì)數(shù)器,主要用于實(shí)現(xiàn)進(jìn)程間的互斥與同步,而不是用于緩存進(jìn)程間通信的數(shù)據(jù)。為了防止多進(jìn)程競(jìng)爭(zhēng)共享資源,而造成的數(shù)據(jù)錯(cuò)亂。
  • 信號(hào):是進(jìn)程間通信機(jī)制中唯一的異步通信機(jī)制,因?yàn)榭梢栽谌魏螘r(shí)候發(fā)送信號(hào)給某一進(jìn)程
  • Socket:如果想跨網(wǎng)絡(luò)與不同主機(jī)上的進(jìn)程之間通信,需要socket。

6.什么是零拷貝?零拷貝實(shí)現(xiàn)的幾種方式?哪些中間件應(yīng)用了零拷貝技術(shù)?

零拷貝是指計(jì)算機(jī)執(zhí)行IO操作時(shí),CPU不需要將數(shù)據(jù)從一個(gè)存儲(chǔ)區(qū)域復(fù)制到另一個(gè)存儲(chǔ)區(qū)域,從而可以減少上下文切換以及CPU的拷貝時(shí)間。它是一種I/O操作優(yōu)化技術(shù)。

零拷貝實(shí)現(xiàn)的方式主要有這三種:

  • mmap+write
  • sendfile
  • 帶有DMA?收集拷貝功能的sendfile

Kafka為什么快等,也跟零拷貝技術(shù)有關(guān)。

我之前寫過一篇零拷貝技術(shù)的文章,收到了很多讀者好評(píng),大家可以看下哈,看一遍就理解:零拷貝詳解

7. 你如何設(shè)計(jì)分布式鎖?有哪些坑?

圖片

8. Redis跳表

圖片

  • 跳躍表是有序集合zset的底層實(shí)現(xiàn)之一
  • 跳躍表支持平均O(logN)?,最壞O(N)復(fù)雜度的節(jié)點(diǎn)查找,還可以通過順序性操作批量處理節(jié)點(diǎn)。
  • 跳躍表實(shí)現(xiàn)由zskiplist和zskiplistNode?兩個(gè)結(jié)構(gòu)組成,其中zskiplist?用于保存跳躍表信息(如表頭節(jié)點(diǎn)、表尾節(jié)點(diǎn)、長(zhǎng)度),而zskiplistNode則用于表示跳躍表節(jié)點(diǎn)。
  • 跳躍表就是在鏈表的基礎(chǔ)上,增加多級(jí)索引提升查找效率。

9. 你平時(shí)是如何優(yōu)化慢SQL的

數(shù)據(jù)庫(kù)慢查詢主要有這些原因

圖片

  • 如果是SQL沒加索引,那就加恰當(dāng)?shù)乃饕?/li>
  • 如果 SQL 索引不生效,那就關(guān)注索引失效的十種經(jīng)典場(chǎng)景(如不滿足最左匹配原則等)
  • 關(guān)注limit深分頁(yè)問題(標(biāo)簽記錄法和延遲關(guān)聯(lián)法)
  • 單表數(shù)據(jù)量太大(那就分庫(kù)分表)
  • join 或者子查詢過多(盡量不要有超過3個(gè)以上的表連接,而且關(guān)聯(lián)的字段需要加索引)
  • in元素過多 (in元素查詢數(shù)量做限制)
  • 數(shù)據(jù)庫(kù)在刷臟頁(yè)
  • order by 走文件排序
  • 拿不到鎖
  • delete + in子查詢不走索引!

詳細(xì)講解,大家可以看下我之前這篇文章哈:盤點(diǎn)MySQL慢查詢的12個(gè)原因

10.十億個(gè)數(shù)字里里面找最小的10個(gè)

這是一道經(jīng)典的TopK問題,可以使用分治法+快速排序原理解決。直接上代碼

class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
if(arr==null||arr.length==0){
return null;
}
// k大于arr數(shù)組,直接返回arr
if(k >= arr.length) return arr;
int low=0,high=arr.length-1;
quick(arr, low, high, k);
//將前K個(gè)最大的元素返回
return Arrays.copyOf(arr,k);
}

void quick(int[] arr, int low, int high, int k) {
if (low < high) {
int pivot = partition(arr, low, high);
//pivot剛好等于k-1的話,那0~k-1就是要求的top k
if (pivot == k - 1) {
return;
}
//pivot還是大于k-1的話,還需要high指針左移,因此high=pivot - 1
if (pivot > k - 1) {
quick(arr, low, pivot - 1, k);
}else {
//pivot<=k - 1的話,需要low指針右移,因此low=pivot + 1
quick(arr, pivot + 1, high, k);
}
}

}


private int partition(int[] arr,int low,int high){
//取arr[low]作為樞紐元素pivot
int pivot=arr[low];
while(low<high){
//右邊找到比pivot小的
while(low<high&&arr[high]>=pivot){
high--;
}
//交換
arr[low]=arr[high];
//左邊找到比pivot大的
while(low<high&&arr[low]<=pivot){
low++;
}
//交換
arr[high]=arr[low];
}
//樞紐元素歸位
arr[low]=pivot;
return low;
}
}


責(zé)任編輯:武曉燕 來源: 撿田螺的小男孩
相關(guān)推薦

2020-12-10 08:23:00

MySQLTCP存儲(chǔ)

2018-01-04 14:58:07

新華三

2010-05-24 10:51:55

十連跳利益共同體

2022-05-14 21:19:22

ThreadLocaJDKsynchroniz

2010-05-28 15:47:16

雙絞線

2021-05-17 19:01:04

安全運(yùn)營(yíng)SOC攻擊

2023-01-28 08:24:28

MySQL索引B+樹

2023-04-26 07:40:34

MySQL索引類型存儲(chǔ)

2024-04-29 08:20:40

Java后端Redlock

2023-03-10 08:45:15

SQL優(yōu)化統(tǒng)計(jì)

2021-02-04 14:26:08

云計(jì)算IT疫情

2021-11-01 13:38:55

Linux文件系統(tǒng)

2009-08-14 13:27:43

2009-08-14 15:00:47

SSL證書 天威誠(chéng)信VeriSign證書

2022-08-17 08:17:01

SPI機(jī)制接口

2025-06-03 01:45:00

2021-07-12 07:08:52

TCP協(xié)議面試

2021-11-09 09:30:52

OkHttp面試Android

2015-07-02 15:04:53

CSS好奇心+
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久精品亚洲精品国产欧美 | 爱爱免费视频 | 一级免费毛片 | 精品伦精品一区二区三区视频 | 亚洲交性| 91香蕉视频在线观看 | 天天操夜夜骑 | 国产二区三区 | 国产成人精品999在线观看 | 成人在线观看免费视频 | 亚洲福利 | 三级特黄特色视频 | 激情91| 欧美日韩在线播放 | 色综合久久天天综合网 | 亚洲人免费视频 | 午夜影晥| 欧美影院 | 日韩中文一区二区三区 | 欧美视频在线播放 | 久久在线免费 | 欧美国产亚洲一区二区 | 成人免费视频一区二区 | 中文字幕 在线观看 | 中文字幕久久精品 | 在线观看视频一区二区三区 | 日本成人三级电影 | 久久国产精品精品国产色婷婷 | 精品亚洲一区二区三区四区五区 | 久久久久久久久国产成人免费 | 精品久久久av | 亚洲精品4 | 一本一道久久a久久精品综合 | 欧美mv日韩mv国产网站91进入 | 美女视频一区 | 日本人和亚洲人zjzjhd | 欧美a v在线 | 日韩成人免费 | 欧美综合一区二区 | 2019天天干夜夜操 | 午夜天堂精品久久久久 |