天天看點

android自動化測試!我的移動開發春季曆程,已拿到offer

前言

一個Android開發的朋友跟我談他面試經曆,上周去愛奇藝面試,其他問題都答得不錯,面試官問了一個哈夫曼算法的題沒答出來,後來面試官很明确的說,我們還是想找一個會些算法基礎的。

android自動化測試!我的移動開發春季曆程,已拿到offer

如果之前有學過資料結構和算法,建議大家不定時的去刷刷算法題

因為從面試的角度來講,目前 BAT 和 TMD 等一線網際網路企業或多或少都會有幾個算法題,而對應屆畢業生來說,算法的要求度則更高!這裡可以分享一下我收集整理的資料結構算法題含答案。

AWTK 主要特色:

1、跨平台

AWTK 是跨平台的,這有兩個方面的意思:

  • AWTK 本身是跨平台的。目前支援的平台有 ZLG AWorks、Windows、Linux、MacOS、嵌入式 Linux、Android、Web 和嵌入式裸系統,可以輕松的移植到各種 RTOS 上。AWTK 以後也可以運作在各種小程式和 iOS 等平台上運作。
  • AWTK 同時還提供了一套跨平台的基礎工具庫。其中包括連結清單、數組、字元串 (UTF8 和 widechar),事件發射器、值、對象、檔案系統、互斥鎖和線程、表達式和字元串解析等等,讓你用 AWTK 開發的應用程式可以真正跨平台運作。

2、高效

AWTK 通過一系列的手段保證 AWTK 應用程式高效運作:

  • 通過髒矩算法隻更新變化的部分。
  • 支援 3 FrameBuffer 讓界面以最高幀率運作 (可選)。
  • UI 描述檔案和主題檔案使用高效的二進制格式,解析在瞬間完成。
  • 支援各種 GPU 加速接口。如 OpenGL、DirectX、Vulkan 和 Metal 等。
  • 支援嵌入式平台的各種 2D 加速接口。目前 STM32 的 DMA2D 和 NXP 的 PXP 接口,廠家可以輕松擴充自己的加速接口。

3、穩定

AWTK 通過下列方式極力讓代碼穩定可靠:

  • 使用 cppcheck 和 facebook infer 進行靜态檢查。
  • 使用 valgrind 進行動态記憶體檢查。
  • 近兩萬行的單元測試代碼。
  • ZLG 強大 GUI 團隊的支援。
  • 經過多個實際項目驗證。
  • 多平台 / 多編譯器驗證。
  • 優秀的架構設計。
  • Code Review。
  • 手工測試。

4、強大

  • 豐富的控件 (持續增加中)。
  • 支援各種圖檔格式 (png/jpg/gif/svg)。
  • 支援各種字型格式 (點陣和矢量)。
  • 支援視窗動畫
  • 支援控件動畫
  • 支援高清屏。
  • 支援界面描述檔案。
  • 支援主題描述檔案。
  • 支援控件布局政策。
  • 支援對話框高亮政策。
  • 豐富的輔助工具。
  • 支援從低端的 Cortex M3 到各種高端 CPU。
  • 支援無檔案系統和自定義的檔案系統。
  • 支援裸系統和 RTOS。

5、易用

  • 大量的示例代碼。
  • 完善的 API 文檔和使用文檔。
  • ZLG 強大的技術支援團隊。
  • 用 AWTK 本身開發的界面編輯器 (開發中)。
  • 聲明式的界面描述語言。一行代碼啟用控件動畫,啟用視窗動畫,顯示圖檔 (png/jpg/svg/gif)。

6、高度擴充性

  • 可以擴充自己的控件。
  • 可以擴充自己的動畫。
  • 可以實作自己的主循環。
  • 可以擴充自己的軟鍵盤。
  • 可以擴充自己的圖檔加載器。
  • 可以擴充自己的字型加載器。
  • 可以擴充自己的輸入法引擎。
  • 可以擴充自己的控件布局算法。
  • 可以擴充自己的對話框高亮政策。
  • 可以實作自己的 LCD 接口。
  • 可以擴充自己的矢量引擎 (如使用 skia/cairo)。所有擴充元件和内置元件具有相同的待遇。

7、多種開發語言

AWTK 本身是用 C 語言開發的,可以通過 IDL 生成各種腳本語言的綁定。生成的綁定代碼不是簡單的把 C 語言的 API 映射到腳本語言,而是生成腳本語言原生代碼風格的 API。目前支援以下語言 (以後根據需要增加):

  • C
  • Lua
  • Javascript on jerryscript
  • Javascript on nodejs
  • Javascript on quickjs

8、國際化

  • 支援 Unicode。
  • 支援輸入法。
  • 支援字元串翻譯 (實時生效)。
  • 支援圖檔翻譯 (實時生效)。
  • 文字雙向排版 (計劃中)。
作者2013年從java開發,轉做Android開發,在小廠待過,也去過華為,OPPO等大廠待過,18年四月份進了阿裡一直到現在。

參與過不少面試,也當面試官 面試過很多人。深知大多數國中級Android工程師,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長,而且極易碰到天花闆技術停滞不前!

我整理了一份阿裡P7級别的最系統的Android開發主流技術,特别适合有3-5年以上經驗的小夥伴深入學習提升。

主要包括阿裡,以及位元組跳動,騰訊,華為,小米,等一線網際網路公司主流架構技術。如果你想深入系統學習Android開發,成為一名合格的進階工程師,可以收藏一下這些Android進階技術選型

我搜集整理過這幾年阿裡,以及騰訊,位元組跳動,華為,小米等公司的面試題,把面試的要求和技術點梳理成一份大而全的“ Android架構師”面試 Xmind(實際上比預期多花了不少精力),包含知識脈絡 + 分支細節。
android自動化測試!我的移動開發春季曆程,已拿到offer

Java語言與原理;

大廠,小廠。Android面試先看你熟不熟悉Java語言

android自動化測試!我的移動開發春季曆程,已拿到offer

進階UI與自定義view;

自定義view,Android開發的基本功。

android自動化測試!我的移動開發春季曆程,已拿到offer

性能調優;

資料結構算法,設計模式。都是這裡面的關鍵基礎和重點需要熟練的。

android自動化測試!我的移動開發春季曆程,已拿到offer

NDK開發;

未來的方向,高薪必會。

android自動化測試!我的移動開發春季曆程,已拿到offer

前沿技術;

元件化,熱更新,熱修複,架構設計

android自動化測試!我的移動開發春季曆程,已拿到offer
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時隻是淺嘗辄止,不再深入研究,那麼很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。

我在搭建這些技術架構的時候,還整理了系統的進階進階教程,會比自己碎片化學習效果強太多,GitHub可見;《Android架構視訊+學習筆記》

當然,想要深入學習并掌握這些能力,并不簡單。關于如何學習,做程式員這一行什麼工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。

BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

當然,想要深入學習并掌握這些能力,并不簡單。關于如何學習,做程式員這一行什麼工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。

不出半年,你就能看出變化!