實習電話面試遇到到一些問題(二)

2021-08-16 23:53:00 字數 1269 閱讀 2806

1.redis支援事務嗎?

只是部分支援事務

常用的命令有:

watch key(keys) 監視乙個或多個key,如果在事務執行之前這個或這些key被其他命令所改動,那麼事務將被打斷

multi 標記乙個事務塊的開始

exec 執行所有事務塊內的命令

discard 取消事務,放棄執行事務塊內的所有命令

unwatch 取消watch 命令對所有 key 的監控

1:正常執行 multi … exec

2:放棄事務 discard

3:全體連坐 要麼全部成功,要麼全部失敗,命令錯誤

4:冤頭債主 命令正確,但執行失敗報錯

5:watch監控:

悲觀鎖/樂觀鎖/cas(check and set)

悲觀鎖:鎖整張表,效能極差,但一致性很高

樂觀鎖:為了即保證高併發,又保證不說整張表,在每條記錄後面加乙個version版本號

無加塞篡改,先監控在開啟multi,保證兩筆金額變動在同乙個事務內

有加塞篡改,橫刀奪愛,先watch key 修改value 別人改了 那麼失敗了。 如果我知道別人改了,我先unwatch 在watch 在multi 然後修改 在exec提交執行

三個階段:

1. 開啟:以multi開始乙個事務

2. 入隊:將多個命令入隊到事務中,找到這些命令並不會立即執行,而是放到等待執行事務佇列裡面

3. 執行:由exec命令觸發事務

三個特性:單獨的隔離操作:事務的所有命令都會序列化、按順序地實行

沒有隔離級別的概念:事務提交前任何指令都不會被實際執行

不保證原子性:redis同乙個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,不回滾

2.如何實現乙個棧?

static class mystack

/*出棧*/

void mypop()

/*入棧*/

void mypush(int x)

/*判空*/

boolean myisempty()

/*取棧頂元素*/

int mypeek()

/*棧大小*/

int mysize()

}public

static

void

main(string args)

}

好多問題記不得了,記起來就繼續寫

實習電話面試遇到到一些問題(三)

1.使用反射列出類的所有方法 obtain the class instance class personclass person.class get the methods method methods personclass.getdeclaredmethods loop through the...

面試的一些問題

作為web前端的開發人員,在外人眼裡,大多有碼農,呆板,死相的稱號。一定程度上,這種說法也是正確的。張哥說過,程式就像生活。而,生活大多數時候總是平平淡淡,甚至 更多的時候會覺得枯燥。對於web開發,對於技術,如果不能從理論角度透徹了解,只是單純使用,那也只是一種變相的體力勞動。因此很多面試上的問題...

遇到的一些問題心得

一.專案的版本管理。1 gnu 風格的版本號命名格式 主版本號 子版本號 修正版本號 編譯版本號 major version number.minor version number revision number build number 示例 1.2.1,2.0,5.0.0 build 13124...