自己項目中一直都是用的開源的xUtils框架,包括BitmapUtils、DbUtils、ViewUtils和HttpUtils四大模塊,這四大模塊都是項目中比較常用的。最近決定研究一下xUtils的源碼,用了這么久總得知道它的實現原理吧。我是先從先從BitmapUtils模塊開始的。BitmapUtils和大多數圖片加載框架一樣,都是基于內存-文件-網絡三級緩存。也就是加載圖片的時候首先從內存緩存中取,如果沒有再從文件緩存中取,如果文件緩存沒有取到,就從網絡下載圖片并且加入內存和文件緩存。
這篇帖子先分析內存緩存是如何實現的。好吧開始進入正題。
面試之前準備什么?
老實說,我自己平常沒事就會看一些面試題,所以我都是直接去面的(當然過程也非常慘)。
建議大家如果準備面試的話,需要做以下準備
背題
看一看最近的面經文,了解現在公司都在面什么類型的題,準備一些常見題,開背吧!如果一些基礎的 js 都不會那問題就有點小大了。算法
做一些算法題,lecode 上面的一二三星就夠了,前端算法很簡單,基本都是初中數學的難度吧。項目
項目回顧,把你做的項目從技術架構到源碼都要做到足夠了解,至少面試的時候不要被面試官問住了。并且要體現出你在工作中的作用,體現出自驅性。(大公司都很看中自驅性)。亮點
準備亮點,回答問題的時候不用全部回答上來,但是在面試的過程中一定要有亮點(不然你就會得到反饋,面試官說你還行,但是沒有過~) 我一般會準備幾個點,每個點都保證可以說上半小時。另外一定要了解的很深入,并且能夠用自己的話流暢的表達出來!!(我準備的幾點,性能優化、工程化、緩存、http)內推
最好找人內推,成功率會提高一些練手
先找幾家不太想去的公司(規模差不多)練練手,如果第一次面試就去心儀的公司面試,淘汰率會非常高。心態
心態很重要,面試不過很正常,不證明你不優秀,只是不適合,總結面試經驗,為下一次做準備。
如何回答問題?
怎么把自己會的問題說好,這個很關鍵
邏輯清晰
一定要邏輯清晰,不然即使你知道這個問題的答案,面試官也不會滿意,如果你邏輯清晰,即使這個答案不會,面試官也會給你加分。獨特理解
現在的面試題大同小異,那么如何體現出你的優勢就很重要。結合業務以及你自身的知識儲備來講。深入思考
對每個問題一定要有深入的思考,不然就很難進入大公司了,深度上要有一個拔高才能在面試中獲得好的成績流暢表達
面試就是一個表達的過程,一些問題心里明白不行,還要流暢的表述出來,基本上如果面試官覺得你表達的很流暢,當你講到一半就不會再讓你說下去了,證明已經通過了
還能記住的面試題
- 手寫繼承
- instanceof 實現原理
- promise 限制并發數
- 箭頭函數跟普通函數的區別
- flex 1 全寫
- vue 雙向綁定原理
- https 實現原理(越詳細越好)
- node 進程之間如何通訊
- graghgl 如何優化請求速度
- node 跟瀏覽器的 event loop 區別
- 瀏覽器渲染也頁面過程
- 如何性能優化
- CDN 優化有哪些
- webpack 插件原理,如何寫一個插件
- 緩存有哪些,區別是什么
- 手寫 bind、reduce
- 防抖截流
- 遍歷樹,求樹的最大層數。求某層最多的節點數
- node 開啟進程的方法有哪些,區別是什么
- node 如何部署的
- node check 階段做了什么,觸發了什么事件
- 前端模塊化的理解
- node 如何處理錯誤的
- 隱式轉換
- 數字在計算機怎么儲存的
- webpack 優化
- webpack 的 require 是如何查找依賴的
- webpack 如何實現動態加載
- 給你一個項目,從頭開始你怎么考慮
- 工作流做了哪些事情
- 如何提升效率與性能
- 未來的規劃是什么
- 跨域有哪些
- 網絡安全
- 鏈表與數組的區別
- 變量提升 let const var 區別
- 鏈表如何遍歷
- script 標簽中 async 跟 defer 的區別
最后
代碼真的是重質不重量,質量高的代碼,是當前代碼界提倡的,當然寫出高質量的代碼肯定需要一個相當高的專業素養,這需要在日常的代碼書寫中逐漸去吸收掌握,誰不是每天都在學習呀,目的還不是為了一個,為實現某個功能寫出高質量的代碼。
所以,長征路還長,大家還是好好地做個務實的程序員吧。
最后,小編這里有一系列Android提升學習資料,有興趣的小伙伴們可以來看下哦~
我的Android 學習,面試文檔,視頻收集大整理