🌈鍵盤敲爛,年薪30萬🌈
個人簡介:
大三在校生,二本院校,專業:信息管理與信息系統
面試崗位:
java開發實習生
投”簡歷“
????????臨近大三寒假,很早就有實習想法的我,對12月做了一下規劃,原本計劃12月中旬著手為實習做準備,但在這之前,我打開招聘網站隨便投遞了幾家公司,我是這樣操作的:先是投了下簡歷,然后附上一句話,你好,貴公司有在招聘寒假實習生嗎?(浪潮給我秒拒了>_<)有幾個給了答復,其中有一個讓我做筆試,筆試過了就可以約面試,實習薪資第一個月2500-99999,懂的都懂,這樣的機會我指定不能放過啊,于是就有了我為期一天的準備。
面試流程:
????????在這說一下,筆試它給了一個項目,三天之內完成一個功能模塊的開發,就是標準的CRUD,有手就行,通過筆試之后hr給我的消息是第二天10點騰訊會議面試。
????????我9點40進的會議,面試官9點55進來的,剛開始你真別說,聲音很像黑馬的李老師,面試官進來直奔主題,不多廢話,我原本就很緊張,沒有過多交流讓我更緊張。
????????9點55開始的,10點08就結束了。
面試官:
xxx是吧,自我介紹一下、
我:
我是一名大三在校生,信息管理與信息系統專業,自學的java后端相關知識,想找一份與java開發的實習工作。
面試官:
嗯,有做過什么項目嗎?
我:
有,跟著B站黑馬視頻做過瑞吉外賣,蒼穹外賣。
面試官:
奧,外賣項目是吧,說一下項目中主要實現的功能。
我:
這里我說的很別扭,什么都沒說出來,最后說了句項目中一些模塊的功能開發都實現了一遍。
(其實面試之前應該對項目進行總結的,把面試官引導到你準備的問題上來,這里我啥也沒說,把發揮空間留給了面試官)
面試官:
支付功能有沒有???
我:
這部分功能沒有實現,就比如蒼穹外賣吧,它是微信小程序端的一個項目,它的支付功能需要申請商戶號,支付成功后,微信服務器會調用后端服務器的一個paysuccess方法,我是自己手動修改數據庫,模擬實現了一下訂單支付。
面試官:
項目中有套餐模塊是吧,我:對
面試官:
那如果套餐庫存為0或者套餐下架業務邏輯是什么樣呢
我:
套餐首先會關聯菜品,當菜品處于起售的時候該套餐不允許下架,對于庫存我的項目中好像沒有涉及,(其實是有的)
面后整理的回答:
套餐庫存為0的業務邏輯:
下單失敗: 當用戶下單時,系統可以檢查套餐的庫存,如果庫存為0,則拒絕生成訂單,返回給用戶相應的提示,如“庫存不足”或“該套餐已售罄”。
套餐下架的業務邏輯:
阻止下單: 當套餐下架時,用戶下單時不會查詢到已下架的套餐。
下架套餐: 關聯菜品的套餐不能被下架
面試官:
如何保證操作多張表的時候數據一致性。
我:
操作多張表的時候,一般會在service層的方法上加上@transactional注解,當發生異常的時候,事務會回滾。
面試官:
什么情況可能導致事務異常??
我:
嗯,我想一下,如果程序拋異常了,就會導致事務異常,其他想不起來了。
面后整理的回答:
數據庫連接問題: 如果在事務執行期間數據庫連接發生問題,比如連接中斷或數據庫不可用,事務可能會失敗。
違反數據庫約束: 當嘗試向數據庫中插入、更新或刪除數據時,如果違反了數據庫的約束條件,如唯一性約束、外鍵約束等,事務將失敗。
死鎖: 當多個事務相互等待對方釋放鎖資源時,可能發生死鎖。如果系統無法解決死鎖,某些事務將被終止,導致異常。
超時: 事務執行時間超過了系統設置的最大時間限制,可能會導致事務異常。這通常是為了避免長時間運行的事務阻塞系統。
程序錯誤: 編程錯誤可能導致事務異常。例如,在事務中執行的代碼中可能包含了錯誤,或者事務在執行期間遇到了意外情況。
并發問題: 在多用戶并發訪問的環境中,如果不正確地處理并發控制,可能會導致事務異常,如丟失更新、臟讀等問題。
資源耗盡: 如果事務在執行期間請求的資源(如內存、文件句柄等)超出了系統的可用資源,可能會導致事務異常。
中斷操作: 在事務執行期間,如果操作系統或硬件發生故障,或者系統被強制關閉,事務可能無法正常完成。
面試官:
springcloud有沒有學過?
我:
沒有,下一步正打算學springcloud
面試官:
springboot中哪里用到了反射機制
我:
(當時已潮)嗯嗯,(想了半天)能不能給點提示,我對反射這一塊有點懵
面試官:
反射有沒有了解過
我:
反射就是通過類的字節碼文件操作里面的方法。
面試官:
哪springboot中哪里用打了反射
我:
嗷嗷,我想到一個,當bean屬性注入的時候,一般使用setter注入,或者構造器注入,之后可以加@data注解體哦國內set方法,這里用到了暴力反射。
面試后整理回答:
依賴注入(Dependency Injection): Spring Boot 使用反射來實現依賴注入。在你的應用程序中,你可以使用
@Autowired
注解來注入依賴關系。Spring 通過反射來檢查和設置注入的屬性或構造函數參數。組件掃描: Spring Boot 通過掃描包路徑來發現和注冊組件(例如,
@Controller
、@Service
、@Repository
等)。這涉及到使用反射來檢查類的注解和創建相應的對象。AOP面向切面編程:?Spring Boot 使用 AOP 實現一些橫切關注點,例如事務管理、日志記錄等。AOP 在運行時通過代理生成機制,使用了反射來創建代理對象,并在方法執行前后織入橫切邏輯。
動態代理:?Spring Boot 中的一些特性,例如緩存、事務管理等,使用了動態代理。動態代理是通過反射在運行時創建代理對象的一種機制。
數據綁定:?Spring Boot 中使用了數據綁定來將外部配置文件中的屬性值綁定到 Java 對象上。這個過程中涉及到通過反射設置對象的字段。
BeanPostProcessor:?Spring 框架中有一些接口,如
BeanPostProcessor
,允許在 bean 初始化前后進行處理。這涉及到使用反射來檢查和修改 bean 的屬性。
面試官:
hashtable與hashmap的區別
我:
(答得很臭)
hashtable和hashmap主要的別就是線程安全不安全,hashtable允許有null值,而hashmap,(忘了hashmap的null能不能有了,然后面試官接著就問了下一個問題)
整理:
線程安全性:
HashMap
?是非線程安全的。多個線程可以同時訪問?HashMap
,但在多線程環境下,可能需要額外的同步措施來確保線程安全。Hashtable
?是線程安全的。所有的方法都是同步的,這意味著在多線程環境下,多個線程可以安全地訪問?Hashtable
?而不需要額外的同步手段。然而,這也導致了在性能上的一些損耗。性能:
- 由于?
Hashtable
?的所有方法都是同步的,因此在單線程環境下的性能可能比?HashMap
?差。HashMap
?是非同步的,因此在單線程環境下性能更好。在許多單線程的應用中,HashMap
?往往是更好的選擇。允許null鍵值:
HashMap
?允許鍵和值都為?null
。Hashtable
?不允許鍵和值為?null
,如果嘗試插入?null
?鍵或值,會拋出?NullPointerException
。繼承關系:
HashMap
?繼承自?AbstractMap
?類,實現了?Map
?接口。Hashtable
?繼承自?Dictionary
?類,實現了?Map
?接口。迭代器:
HashMap
?的迭代器是快速失敗的。在迭代過程中,如果有其他線程修改了?HashMap
?的結構(增加或刪除元素),會拋出?ConcurrentModificationException
?異常。Hashtable
?的迭代器不是快速失敗的。由于所有方法都是同步的,因此在迭代時不會發生結構上的改變。
面試官:
那如何兼顧性能和線程安全呢?
我:
使用hashmap加synchronized關鍵字(直接涼涼~~)下面就是我的胡言亂語時間……
整理:
選擇合適的集合類型:有些集合類型天生是線程安全的,例如
ConcurrentHashMap
,而有些則不是,如HashMap
。如果你需要線程安全性,選擇相應的集合類型是首要考慮。使用不可變集合: 不可變集合是線程安全的,因為它們在創建后不能被修改。在多線程環境中,使用不可變集合可以避免許多線程安全性問題。
面試官:
git有沒有用過? 我:有,一直在用
面試官:
如何解決git中的沖突問題
我
先pull拉下來,然后合并,然后提交(答的也很臭)
整理:
? ? 獲取最新代碼:
git pull origin master
? ? 查看那些文件沖突
git status
? ? 打開沖突文件: 打開包含沖突的文件,你會看到類似如下的標記:? ?
<<<<<<< HEAD // Your changes ======= // Incoming changes >>>>>>> branch_name
? ? 手動修改沖突文件:編輯文件,根據需要選擇保留或合并修改。刪除沖突標記和不需要的代碼,留下你需要的變更。
? ? add 到本地倉庫
git add path/to/conflicted_file
? ? merge合并文件
git merge -continue
? ? commit push
git commit -m "xx" git push origin master
面試官:
好,你還有社么問題嗎
我:
有點緊張,第一次面試,不知道答得怎么樣
面試官:
人事在一到兩周后會給你消息,(溜了~~)
我忘了和它說拜拜了~~
總結:
第一次面試時間很短,收獲也一般吧,就感覺自己的技術還是不到位
springboot還是不行,原理,用到的技術都不熟練。