程序員在地鐵上寫代碼被路人吐槽:有什麼好裝的!網友評論炸鍋了!

現在的人自我意識越來越強,專注做自己的事不太會在意別人的眼光,不管別人如何評價路,畢竟腳下的路是自己在走。

最近有位網友在職場論壇上發帖,說看見地鐵上有一程序員大哥在寫代碼,並且配上了一張照片。

從照片中可以看出,一位男子坐在靠地鐵欄杆的地方,把包放在腿上,墊着電腦,噼噼啪啪的在工作,地鐵上人不多,顯然不是高峯期,他工作的狀態很專注。

沒想到程序員的這個舉動卻被路人吐槽說:“有什麼好裝的”,地鐵裏手機信號都不好,如果遇到緊急的bug,早就下車找地方去修改了,還用在地鐵裏幹。

但這個網友的帖子立刻引來其他網友的回懟,說寫代碼根本不用網絡而且地鐵的網絡現在也很好,就是因爲他覺得寫代碼是一個很高大上的事情,所以纔會覺得程序員在裝。

其實在程序員看來這就是他的工作,是因爲工作太多,進度太趕,實在忙不過來,或者因爲在下班的路上,突然有了靈感纔在地鐵裏幹活。

也有網友說,不管他是不是裝,他都是在工努力工作,對於這種抓緊分分秒秒都在拼搏的年輕人,我們應該對他心生敬意,而不是冷嘲熱諷。

如果一個人在地鐵裏背英文單詞,是不是也會被人諷刺裝呢,但是有很多人就是這樣不斷充實自己,才讓自己變得更優秀。

也有人說他不是在裝,沒有從事過這個行業的人不瞭解,真的是太忙了,地鐵裏不幹,可能回家就要多幹一小時,利用地鐵的時間多幹一點,那麼回家就可以多休息一會。

分享讀者

作爲一名Android開發,與其整天996,拼命加班,不妨正視自己的缺點和不足,構建一個屬於自己的知識體系,提升工作效率。

同時也能夠讓我們學到的知識體系化.讓自己清楚哪塊是自己的知識盲區,哪塊已經構建起根基.然後根據實際情況,有針對性的進行模塊學習.讓自己成爲一個合格的Android工程師.

我們平時看博客或者學知識,學到的東西比較零散,沒有獨立的知識模塊概念,而且學了之後很容易忘.於是我建立了一個自己的筆記倉庫 (一個我長期維護的筆記倉庫,感興趣的可以點個star~你的star是我寫作的巨大大大大的動力),將平時學到的東西都歸類然後放裏面,需要的時候呢也方便複習.過了段時間,我覺得這樣還是不夠好,於是我最近花了點時間,整理了一下Android中的常見知識,畫了一張思維導圖.更清晰地認識自己的知識邊界到底在哪裏,哪些東西還不足.

此知識體系呢只是一個參考,大家可以根據自己的實際情況進行鍼對性學習,然後進行查漏補缺,提升自己~

1. 計算機基礎

1.1 計算機網絡

1.1.1 計算機網絡概述

  • 網絡七層協議

  • TCP/IP四層模型

  • 底層協議

  • 底層設備

1.1.2 應用層

  • HTTP協議(⭐⭐⭐)

  • DHCP協議(⭐⭐⭐)

  • NAT

1.1.3 傳輸層(⭐⭐⭐)

  • TCP協議

  • UDP協議

1.1.4 網絡層

  • IP協議

  • ICMP協議

1.2 操作系統(⭐⭐⭐)

1.2.1 操作系統基本功能

  • 進程管理

  • 作業管理/文件管理

  • 存儲管理/設備管理

1.2.2 Linux系統

  • 內存管理

  • 進程管理

  • 文件系統

  • 常見命令操作

1.2.3 補充

  • 自旋鎖/互斥鎖/讀寫鎖/條件變量/共享文件

  • 消息隊列/管道/信號量

  • 操作系統的用戶態與內核態

  • 上下文切換成本

  • 進程,線程與協程

2. Java基礎(⭐⭐⭐)

image

2.1 集合原理

  • ArrayList

  • Vector

  • Stack

  • LinkedList

  • HashMap

  • Hashtable

  • TreeMap

  • LinkedHashMap

  • HashSet

  • TreeSet

  • CopyOnWriteArrayList

  • ConcurrentHashMap

  • LinkedBlockingQueue

  • SynchronousQueue

  • SparseArray

  • ArrayMap

2.2 其他

  • 面向對象

  • 設計模式

  • 反射

  • 泛型

  • 註解

3. Java併發

3.1 線程基礎

  • 實現多線程

  • 啓動線程

  • 停止線程

  • 線程的6種狀態

  • 各種各樣的鎖

    • 悲觀鎖和樂觀鎖

    • 共享鎖和獨佔鎖

    • 公平鎖和非公平鎖

    • 可重入鎖和非可重入鎖

    • 可中斷鎖和非可中斷鎖

    • 自旋鎖和非自旋鎖

    • 偏斜鎖/輕量級鎖/重量級鎖

    • JVM對synchronized鎖的優化

  • wait/notify/sleep/join等重要方法

  • 守護線程,優先級等屬性

  • 線程安全

  • Future獲取運行結果

  • Fork/Join模式

  • CountDownLatch

  • CyclicBarrier

  • Semaphore

  • Condition

  • Phaser

  • 重排序

  • 原子性

  • 內存可見性

  • CAS原理

  • AQS框架

3.2 其他

3.2.1 併發容器

  • Vector/Hashtable

  • ConcurrentHashMap

  • CopyOnWriteArrayList

  • 阻塞隊列

  • 非阻塞隊列

  • ConcurrentSkipListMap

3.2.2 atomic包,6種原子類

  • 分類

  • 原子類與鎖

  • 原子類與volatile

3.2.3 ThreadLocal

  • 使用場景

  • 原理

3.3.4 線程池

  • 優點

  • 參數

  • 分類

  • 執行任務流程

  • 拒絕策略

  • 正確關閉線程池

  • 線程池複用原理

4. JVM虛擬機

  • 內存區域

  • 內存模型

  • 內存分配回收策略

  • Java對象的創建、內存佈局和訪問定位

  • GC: 引用計數及可達性分析,垃圾回收算法,G1及ZGC

  • 類加載機制

  • 雙親委派模型

  • 編譯器優化: 方法內聯,逃逸分析

  • 虛擬機相關: HotSpot及JIT,Dalvik,ART及AOT

  • JVM執行方法

  • JVM實現反射

  • JVM實現泛型

  • JVM實現異常

  • JVM實現註解

5. 數據結構與算法

5.1 數據結構

  • 隊列

  • 數組

  • 鏈表

  • Hash表

  • 二叉樹

  • 基礎排序算法

  • 字符串操作

5.2 算法

  • 分治算法

  • 動態規劃

  • 貪心算法

  • 分支限界法

5.3 刷題

6. Android基礎

image

6.1 核心知識點

6.1.1 四大組件

  • Activity

  • Service

  • BroadcastReceiver

  • ContentProvider

6.1.2 佈局和控件

  • RelativeLayout

  • FrameLayout

  • LinearLayout

  • ConstraintLayout

  • Button

  • TextView

  • RecyclerView

6.1.3 自定義View/ViewGroup

  • onMeasure

  • onLayout

  • onDraw

  • onTouchEvent

  • dispatchTouchEvent

  • 自定義屬性

6.1.4 動畫和手勢

  • View動畫

  • 屬性動畫

  • layoutAnimation視圖動畫

  • 手勢檢測(GestureDetector)

  • 縮放手勢檢測(ScaleGestureDecetor)

6.1.5 網絡

  • 請求網絡

  • 解析數據

6.1.6 圖片加載

  • 本地圖片

  • 網絡圖片

  • 壓縮圖片

  • 多圖列表

  • DiskLruCache

6.1.7 Handler

  • Looper

  • Message

  • MessageQueue

  • 內存泄漏

  • ThreadLocal

6.1.8 Android各版本新特性

  • Android5.0

  • Android6.0

  • Android7.0

  • Android8.0(O)

  • Android9.0§

  • Android10.0(Q)

  • Android11.0®

6.1.9 其他

  • adb常用命令

  • 文件和數據庫

  • 異步線程池

  • Resources

6.2 開源庫使用

  • Retrofit/OKhttp

  • RxJava

  • Glide

  • 註解框架

  • Jetpack

6.3 性能優化

6.3.1 快-流暢的體驗

  • 佈局優化

  • 繪製優化

  • 內存優化

  • 啓動優化

  • 其他

6.3.2 穩-穩定

  • 避免內存泄露

  • 避免崩潰

6.3.3 省-省電/流量

  • 使用JobScheduler調度任務

  • 使用懶惰法則

6.3.4 小-安裝包小

  • apk構成

  • 包體優化

7. Android進階

7.1 核心知識點

7.1.1 多進程

  • Binder

  • AIDL

  • Messenger

7.1.2 Activity難點

  • onSaveInstanceState()和onRestoreInstanceState()

  • intent-filter匹配規則

  • 生命週期

  • 啓動模式

  • Activity啓動過程

  • App啓動過程

7.1.3 Service難點

  • startService流程

  • bindService流程

7.1.4 BroadcastReceiver難點

  • 註冊/發送/接收工作原理

7.1.5 ContentProvider難點

  • ContentProvider啓動過程

7.1.6

  • View繪製

  • 事件分發

  • 消息隊列

  • AsyncTask原理

  • RemoteViews

  • Window和ViewRootImpl

7.2 開源庫原理

  • OkHttp

  • Retrofit

  • RxJava

  • Glide

  • LeakCanary

  • GreenDao

  • ARouter

7.3 Gradle

  • 編譯

  • 混淆

  • 簽名

  • Groovy

  • Gradle構建流程

  • GradlePlugin

  • Gradle構建優化

  • App構建過程

  • 差異化打包

7.4 初級架構

  • 設計模式

  • MVC,MVP,MVVM

7.5 JNI

  • JNI基礎

  • NDK基礎

7.6 動態化

7.6.1 前置知識

  • Android打包流程

  • Java字節碼

  • GradlePlugin

  • TransformAPI

  • ASM

7.6.2 熱修復:nuwa&Tinker

  • 經典-64k問題

  • dex分包

  • MultiDex優化

  • findClass原理

  • QQ空間熱補丁方案

  • Nuwa應用層實現

  • NuwaGradle

7.6.3 插件化:VirtualAPK

  • 加載類

  • 資源訪問

  • 生命週期管理

7.7 編譯插樁

  • AOP

  • ASM

7.8 Framework

7.8.1 系統服務

  • Zygote啓動

  • Android系統啓動

  • ServiceManager啓動及工作原理

7.8.2 應用進程

  • 啓動流程

  • 啓用Binder機制

  • Application初始化流程

  • Context

7.8.3 UI體系

  • 顯示原理

  • UI線程啓動

  • 屏幕刷新機制

  • surface

  • vsync

7.8.4 進程通信

  • Binder

  • IPC通信流程

  • Binder對象跨進程傳遞

  • OneWay機制

7.8.5 線程通信

  • 消息隊列

  • 消息傳遞機制

  • Handler消息延遲實現

  • IdleHandler原理

  • 消息屏障

  • ThreadLocal原理

7.8.6 其他

  • 跨進程傳遞大圖片

  • 四大組件啓動原理

8. 領域專家

8.1 性能優化方向

  • 穩定性優化

  • 啓動速度優化

  • 繪製優化

  • 內存優化

  • 包體積優化

  • 網絡優化

  • IO優化

  • 存儲優化

  • 耗電優化

8.2 基礎架構方向

  • Android工程實踐

  • Gradle自動化構建

  • 編譯插樁技術

  • Android架構

  • Android熱修復

  • Android插件化

  • Android核心源碼

8.3 NDK、音視頻

  • C

  • C++

  • JNI基礎

  • 編譯原理與語法基礎

  • Linux基礎

  • 熱修復

  • Gif圖實現

  • 音視頻基礎

  • ffmpeg

  • WebRTC

  • opengl

  • vulkan

  • opencv

8.4 大前端

8.4.1 前端基礎

  • HTML

  • CSS

  • JavaScript

8.4.2 Flutter(⭐⭐)

  • Dart入門

  • Flutter入門

  • 開發

  • 工程管理

  • 線上運維

  • 發佈

  • 測試調試

8.4.3 其他

  • ReactNative

  • 小程序

  • 性能優化

9. 其他Android相關

9.1 Koltin(⭐⭐)

9.1.1 基礎部分

  • 內置類型

  • 類型初步

  • 表達算式

  • 函數進階

  • 類型進階

9.1.2 高級部分

  • 泛型

  • 反射

  • 註解

  • 協程

本文在開源項目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄,裏面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章