面試官是個小姐姐,好溫柔好好,是我面過最為舒服的面試官了------------------------更新面經(jīng) 后端一面 幾乎全程項目拷打手撕 二叉樹層序遍歷你在研究生這個項目參與度比較多嗎?它實現(xiàn)了一個登錄模塊,把用戶抽離,多登陸的token共享,token踢人下線,能詳細講講嗎?如果踢人的話你們是想踢已經(jīng)登錄的呢?還是新加入的就不讓登錄了?為什么會出現(xiàn)頻繁登錄的事情正則表達式是否正確,是匹配的什么信息?用戶登錄的時候,讓用戶填寫的有哪幾個選項?驗證碼你們這邊會存嗎?驗證碼是誰生成的?驗證碼有時效性嗎?驗證通過后,驗證碼是存在redis里面,你們的后端存儲Mysql,就只有redis,沒有Mysql之類的嗎?那么用戶登錄的時候,就會實現(xiàn)一個token返回給用戶是嗎?那token返回是什么樣的形式呢?是放在請求的頭(head)里面,還是請求的請求體(body)里面?那如果下一次用戶登錄的時候,他再開一個頁面的時候,他還需要再次登錄嗎?這個token的保存是誰來保存的?你們這個服務是一個大后端是嗎?那后端上面是不是提供了很多請求,請求API,我們在驗證的時候,那么多請求,所有用戶發(fā)過來的請求,是否合法,存在或不存在,如果存在的話它的有效期是多少?比如你在設計的時候,100個API都能去驗證是否有效性?支付網(wǎng)關(guān)回調(diào)采用可靠支付一致性的設計,這邊怎么去做的?seata是什么?假如說一個交易的時候,某個人惡意發(fā)起了二次交易,他開了一個窗口,出現(xiàn)了回滾,但在出現(xiàn)回滾的時候,他又發(fā)起了二次交易,那他之前完成的那些代金券扣除,積分扣除該怎么處理?那他看到的積分和代金券是已經(jīng)扣除的但是在第一次交易沒有完成之前,他又發(fā)起了一個支付,那他代金券,積分,等顯示的是扣除后的還是扣除前的?你用redis鎖避免回執(zhí)超發(fā),這個回執(zhí)超發(fā)怎么理解?hashset和Arraylist這些是線程安全的嗎?Java有哪些線程安全的?hashtable怎么做到線性安全的呢?synchronized是什么鎖呢?hashtable的性能高嗎?如果是悲觀鎖的話?