日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大厂Offer拿到手软啊!技术详细介绍

發布時間:2024/1/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大厂Offer拿到手软啊!技术详细介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面試了一位工作12年的程序員,

這位老哥有3年java開發經驗,2年H5,7年Android開發經驗,簡歷上寫著精通Java,Android,熟悉H5開發。沒有具體的技術點。

說實話我很期待這位老哥的面試,于是讓人事邀約了他。

老哥面試的氣場很足,我也很尊敬他,一大波的自我介紹之后,我們進入了正題。

我問了他Jetpack,他說幾乎沒用過Jetpack,于是我給他舉了個小例子,老哥給我的答案是百度可以解決。

于是我又問了他Groovy,老哥還是說不清楚,于是我問了最基礎的Handler,Binder等幾個關鍵詞,依舊說不清楚,老哥依舊那么強勢霸氣,他給到我的感覺就是“啥都會做,你別問這些沒用的”。

看著他簡歷上寫著,精通安卓開發,熟悉跨平臺開發,js交互,我問了一句了解Flutter嗎?他說不知道沒聽過,最后問了一句期望薪資他說25k,我不知道問什么了,于是匆匆結束了面試。

網絡:分層模型、TCP、UDP、HTTP、HTTPS

分層模型

  • 應用層:負責處理特定的應用程序細節,如 HTTP、FTP、DNS
  • 運輸層:為兩臺主機提供端到端的基礎通信,如 TCP、UDP
  • 網絡層:控制分組傳輸、路由選擇等,如 IP
  • 鏈路層:操作系統設備驅動程序、網卡相關接口

UDP

  • UDP 頭結構:來源端口、目的端口、長度域、校驗和
  • 特點:不可靠、無序、面向報文、速度快、輕量
  • 適用場景:適用于即時通訊、視頻通話等
  • 應用:DHCP、DNS、QUCI、VXLAN、GTP-U、TFTP、SNMP

TCP

  • TCP 頭結構:來源端口、目的端口、序號、確認序號、SYN/ACK 等狀態位、窗口大小、校驗和、緊急指針
  • 特點:面向字節流、有擁塞和流量控制、可靠、有序、速度慢、較重量,通過滑動窗口實現流量控制、用塞控制
  • 適用場景:文件傳輸、瀏覽器等
  • 應用:HTTP、HTTPS、RTMP、FTP、SMTP、POP3
  • 三次握手:
1\. C->S:SYN,seq=x(你能聽到嗎?) 2\. S->C:SYN,seq=y,ack=x+1(我能聽到,你能聽到嗎?) 3\. C->S:ACK,seq=x+1,ack=y+1(我能聽到,開始吧)兩方都要能確保:我說的話,你能聽到;你說的話,我能聽到。所以需要三次握手 復制代碼
  • 四次揮手:
1\. C->S:FIN,seq=p(我說完了) 2\. S->C:ACK,ack=p+1(我知道了,等一下,我可能還沒說完) 3\. S->C:FIN,seq=q,ACK,ack=p+1(我也說完了) 4\. C->S:ACK,ack=q+1(我知道了,結束吧)S 收到 C 結束的消息后 S 可能還沒說完,沒法立即回復結束標示,只能等說完后再告訴 C :我說完了 復制代碼

HTTP

  • 超文本傳輸協議,明文傳輸,默認 80 端口
  • POST 和 GET:Get 參數放在 url 中;Post 參數放在 request Body 中
  • 訪問網頁過程:DNS 域名解析、TCP 三次握手建立連接、發起 HTTP 請求

HTTPS

  • 默認 443 端口,使用 SSL 協議對 HTTP 傳輸數據進行了加密,安全
  • 加密過程:Client/Server 通過非對稱加密生成密鑰,然后用這個密鑰去對稱加密傳輸數據

算法:數據結構、常用算法

數據結構

  • 數組、鏈表
  • 棧、隊列
  • 散列表
  • 樹、堆、圖

常用算法

  • 排序
  • 雙指針、滑動窗口、字符串
  • 遞歸、分治、二分
  • 回溯、貪心、動態規劃

Java 基礎:StringBuilder、泛型擦除、Exception、IO、容器

StringBuilder

  • StringBuffer 線程安全,StringBuilder 線程不安全
  • +實際上是用 StringBuilder 來實現的,所以非循環體可以直接用 +,循環體不行,因為會頻繁創建 StringBuilder
  • String.concat 實質是 new String ,效率也低,耗時排序:StringBuilder < StringBuffer < concat < +

泛型擦除

  • 修飾成員變量等類結構相關的泛型不會被擦除
  • 容器類泛型會被擦除

Exception 和 Error

  • Exception 和 Error 都繼承自 Throwable
  • Error 大部分是指不可恢復的錯誤狀態,比如 OOM,所以也不需要捕獲
  • Exception 分為 CheckedException 和 UnCheckedException
    • CheckedException:必須顯式捕獲,受編譯器檢查,比如 io 操作
    • UnCheckedException:不用顯示捕獲,比如空指針、數組越界等

IO 、 NIO、 OKIO

  • IO 是面向流的,一次一個字節的處理,NIO 是面向緩沖區的,一次產生或消費一個數據塊
  • IO 是阻塞的,NIO 是非阻塞的
  • NIO 支持內存映射方式
  • okio 相比 io 和 nio,api 更簡單易用
  • okio 支持超時機制
  • okio 引入 ByteString 空間換時間提高性能
  • okio 采用 segment 機制進行內存共享,節省 copy 時間消耗

ArrayList、LinkedList

  • ArrayList
    • 基于數組實現,查找快:o(1),增刪慢:o(n)
    • 初始容量為10,擴容通過 System.arrayCopy 方法
  • LinkedList
    • 基于雙向鏈表實現,查找慢:o(n),增刪快:o(1)
    • 封裝了隊列和棧的調用

HashMap 、HashTable、HashSet

  • HashMap(允許 key/value 為 null)

    • 基于數組和單向鏈表實現,數組是 HashMap 的主體;鏈表是為解決哈希沖突而存在的,存放的是key和value結合的實體
    • 數組索引通過 key.hashCode(還會二次 hash) 得到,在鏈表上通過 key.equals 索引
    • 哈希沖突落在同一個桶中時,直接放在鏈表頭部(java1.8后放到尾部)
    • JAVA 8 中鏈表數量大于 8 時會轉為紅黑樹存儲,查找時間由 O(n) 變為 O(logn)
    • 數組長度總是2的n次方:這樣就能通過位運算實現取余,從而讓 index 能落在數組長度范圍內
    • 加載因子(默認0.75)表示添加到多少填充比時進行擴容,填充比大:鏈表較長,查找慢;填充比小:鏈表短,查找快
    • 擴容時直接創建原數組兩倍的長度,然后將原有對象再進行hash找到新的index,重新放
  • HashTable(不允許 key/value 為 null)

    • 數據結構和 HashMap 一樣
    • 線程安全
  • HashSet

    • 基于 HashMap 實現,元素就是 HashMap 的 key,Value 傳入了一個固定值

ArrayMap、SparseArray

  • ArrayMap

    • 基于兩個數組實現,一個存放 hash;一個存放鍵值對
    • 存放 hash 的數組是有序的,查找時使用二分法查找
    • 發生哈希沖突時鍵值對數組里連續存放,查找時也是通過 key.equals索引,找不到時先向后再向前遍歷相同hash值的鍵值對數組
    • 擴容時不像 HashMap 直接 double,內存利用率高;也不需要重建哈希表,只需要調用 system.arraycopy 數組拷貝,性能較高
    • 不適合存大量數據(1000以下),因為數據量大的時候二分查找相比紅黑樹會慢很多
  • SparseArray

    • 基于 ArrayMap,key 只能是特定類型

Concurrent 集合

  • ConcurrentHashMap
    • 數據結構跟 HashMap 一樣,還是數組加鏈表
    • 采用 segment 分段鎖技術,不像 HashTable 無腦直接同步 put 和 get 操作
    • get 操作沒有加鎖,因為 value 用 volatile 修飾來保證可見行,性能很高
    • java1.8 后去除分段鎖,采用 CAS 樂觀鎖加 synchronized 來實現

LRUCache 原理

  • 基于訪問順序排序的 LinkedHashMap 實現,最近訪問的會排在最后

最后

愿你有一天,真愛自己,善待自己。

本文在開源項目:Android開發不會這些?如何面試拿高薪?中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…

總結

以上是生活随笔為你收集整理的大厂Offer拿到手软啊!技术详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。