面試4分實力,6分運氣,本週運氣還不錯,遇到的面試題都是看過的,但願此次的一面能過吧。面試
本週遇到的其中一個面試題就是這個:在不使用額外空間的狀況下,完成兩個整數的值交換,問題不難,可是若沒看見過,相信能在面試的緊張環境下想出來的確定不算多。算法
先假設a = 1 , b = 2
,要交換 a 和 b。code
a = a + b
,如今 a 就是 a + b。b = a - b
,b 就至關於 a + b - b 等於原來的 a,b 就變成 a 了。a = a - b
,如今 b 就是原來的 a,a 就至關於 a + b - a 就等於原來的 b,a 變成 b 了。想一想這個方法會有什麼問題嗎?隊列
兩個整數相加的時候咱們就不得不考慮溢出的問題了,因此這方法是行不通的。消息隊列
如今個人感覺就是,如果一個跟計算有關的問題想不到解決辦法的時候,那它多半就是和位運算有關了。基礎
而這題就能夠經過異或完成(幸虧看見過,否則面試還真想不起來)bug
- 任何數和 0 異或,都得任何數。
- 任何數與自身異或,都得 0。
先假設a = 1 , b = 2
,要交換 a 和 b。方法
a = a ^ b
,如今 a 就是 a ^ b。b = a ^ b
,b 就至關於 a ^ b ^ b 等於原來的 a,b 就變成 a 了。a = a ^ b
,如今 b 就是原來的 a,a 就至關於 a ^ b ^ a 就等於原來的 b,a 變成 b 了。面試以前原本對此次面試不報但願,由於面的前一天才打電話通知,而基礎知識又已經模糊了,還好簡單的過了一遍,面的時候問的也不算很難,但仍然有不足,首先仍然是算法,一道不難的題但仍沒有作到一次bug free,仍是在面試官的提醒下才發現問題所在,再就是像面試官說的思路不夠靈活,有時候反過來想一下就能發現一個更好的解決辦法,再就是回答問題的時候把一個知識點說錯了(只發現本身說錯了一個,可能並不僅是一個……),最後面試官說的是等待後續安排,也不知是過仍是沒過,但願能過吧。總結
下週的重點應該就是消息隊列和算法了,加油。co