Android開發10月找工作——斬獲offer小技巧

android禿老師 發佈 2022-10-27T18:56:54.292674+00:00

前言在如今的Android開發市場,崗位越來越少。想要在無數人中脫穎而出;拿到自己滿意的offer。那麼在面試過程中一定要勝過其他人,不管是行為舉止還是簡歷的製作,不過占比最重要的還是面試技術環節。如下我總結了一部分面試技巧與面試題。面試小總結1、語言表達能力。

前言

在如今的Android開發市場,崗位越來越少。想要在無數人中脫穎而出;拿到自己滿意的offer。那麼在面試過程中一定要勝過其他人,不管是行為舉止還是簡歷的製作,不過占比最重要的還是面試技術環節。如下我總結了一部分面試技巧與面試題。

面試小總結

1、語言表達能力。

語言表達能力很重要。在開發的過程中,需要把問題描述清楚,交流無障礙。

2、獨立思考問題

開發過程中,終會遇到問題的,可以考量一下面試者的思考方式。比如 出一些算法題。

3、技術相關的

java:

抽象類、接口、自動裝配、反射、異常、註解、文件讀寫、線性安全、java 虛擬機、代碼規範相關等等。

Android:

handler的機制、自定義View、進程通信、事件處理、網絡處理、內存優化、插件化思想、設計模式、類加載器等等

算法:

幾大排序選一個、鍊表、二叉樹等等

接下來主要講重要的技術環節,因為在面試過程中。最看重的還是技術這塊;占比70%以上。

Android面試題分享

Java篇

1.abstract與interface的區別(抽象類和接口)

1、關鍵字:抽象類 abstract         接口interface
2、抽象類繼承 extends             接口實現 implements
3、子類繼承抽象類和                實現類實現接口的格式不同
4、抽象類中有各種屬性和方法         接口中只有全局變量和抽象方法
5、抽象類只能單繼承                接口可以多實現
6、抽象類的子類只能繼承一個父類      實現類可以實現多個接口,並且還可以繼承父類
7、抽象類的作用:提高代碼的復用性    接口的作用:1、規範代碼2、提高代碼的拓展新

2.面向對象和面向過程

面向過程:就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了 面向對象:是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為

3.設計模式

工廠模式: android中的demo體現:線程池 建造者模式: android中,大概build()結尾的都是吧.比如:Imagrloder,AlertDialog.Builder等等. 裝飾者模式: 單例模式:

4.線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的

原因:StringBuffer中很多方法可以帶有synchronized關鍵字,所以可以保證線程是安全的,但StringBuilder的方法則沒有該關鍵字,所以不能保證線程安全,有可能會出現一些錯誤的操作。所以如果要進行的操作是多線程的,那麼就要使用StringBuffer,但是在單線程的情況下,還是建議使用速度比較快的StringBuilder。

5.請簡述 LinkedHashMap 的工作原理和使用方式?

  • 查看LinkedHashMap源碼發現是繼承HashMap實現Map接口。也就是HashMap的方法LinkedMap都有。LinkHashMap與HashMap的主要區別是:LinkedHashMap是有序的,hashmap是無序的。LinkedHashMap通過維護一個雙向鍊表實現有序,也正是因為要維護這個鍊表,內存上有更大的開銷。
  • 有序和無序
  • 我們說的無序是插入順序和輸出順序不一致。
  • 鍊表結構和順序結構:線性結構分為順序結構,和鍊表結構。
  • 順序結構:在內存中是一塊完整有序內存。所以我們在查詢的時候時候直接索引index,便可找到要查詢的數據,速度非常快,缺點是插入刪除慢。有點類似班級排隊時(一列縱隊),每個人都知道自己在第幾個位置。老師只要說第三個位置,那這個同學立馬知道老師要找的是自己。這時候要插入一個同學到第二個位置,所以之前第二個位置開始往後的每個同學的位置都要+1。所以比較慢。
  • 鍊表結構:通過結點頭記錄該結點的上一個結點和下一個下一個結點(就是傳統的雙鍊表,單鍊表就是只記錄下一個結點,循環鍊表就是最後一個結點的下一個結點指向第一個結點)。正是因為這種關係,所以鍊表結構不需要一塊完整的內存,而且插入刪除相對快,但是查詢相對慢。但是因為要維護結點頭,所以內存開銷相對大一點。有點類似於班級排隊時,每個人雖然不知道自己的位置,但是知道自己前面是誰和後面是誰。當要插入一個同學b時到c前面時,只要c同學記住自己之前是a,現在換成b.b記住自己前面是a,後面是c。所以想對來說插入很快。刪除類似。但是當老師按位置查詢時,就要先從第一個開始計數,知道找到老師要找的數字。所以查詢慢。

6.java中實現多線程的三種方式

繼承 Thread 類

實現 Runnable 接口

實現 Callable 接口

Android篇

1.簡述handler的機制

Handler就是一個用於處理多線程異步消息的機制。主要用於線程間通信。並不能支持進程間通信。

2.簡述自定義View

View類是Android中各種組件的基類,如View是ViewGroup基類,表現為顯示在屏幕上的各種視圖。Android中的UI組件都是由View和ViewGroup組成。

3.Android 五種類構造器

  1. PathClassLoader
  2. DexClassLoader
  3. BaseDexClassLoader
  4. BootClassLoader
  5. ClassLoader這5個類加載器。

4.請描述一下Android的事件分發機制

Android的事件分發機制主要是Touch事件分發,有兩個主角:ViewGroup和View。Activity的 Touch事件事實上是調用它內部的ViewGroup的Touch事件,可以直接當成ViewGroup處理。View 在ViewGroup內,ViewGroup 也可以在其他ViewGroup內,這時候把內部的ViewGroup當成View來分析。 先分析ViewGroup的處理流程:首先得有個結構模型概念: ViewGroup 和View組成了一棵樹形結構,最頂層為Activity 的ViewGroup,下面有若干的ViewGroup節點,每個節點之下又有若干的ViewGroup節點或者View節點,依次類推。

算法篇

兩鍊表合併

1、鍊表 head 記錄初始鍊表,tempHead 記錄當前點的鍊表 2、輸入l1 與 l2 長度可能不一致 3、進位記錄 carry


public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int carry = 0;
        ListNode head = new ListNode();
        ListNode tempHead = head;
        head.next = tempHead;
        while (l1 != null || l2 != null) {
            ListNode tempNode = new ListNode();
            int l1val = l1 == null ? 0 : l1.val;
            int l2val = l2 == null ? 0 : l2.val;
            int result = l1val + l2val + carry;

            carry = result / 10;
            tempNode.val = result % 10;
    
            tempHead.next = tempNode;
            tempHead = tempHead.next;
            
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }
        if (carry > 0) {
            ListNode tail = new ListNode(carry);
            tempHead.next = tail;
        }
        return head.next;
    }

上面簡單介紹部分Android面試的幾大塊面試題;從Java、Android、算法出發。當然想要面試中成功擊退競爭對手,刷這些題目是往往不夠的;以上題目及答案均來自與這本整理的電子檔《Android面試題精選》中抽取,如需找工作、跳槽那麼這些你可以輔助你在面試中斬獲很多offer!

【私信「手冊」獲取】《Android精選面經題綱》

總結

現在外面面試問的的確比較多,要求也挺高的,行情不好,薪資也不好要,所以心態一定要放好,找好自己的定位,心態一定要好。

面試之後要儘量做到總結,從我最開始沒什麼準備就出去面試,被打擊一通之後,總結了七八家面試題,會發新面試問到的都是那些知識點,可能角度不一樣,但是你只要深度夠,他怎麼問,你基於原理來回答,基本上都沒差,從簽了賠償協議以後出來面試,連續四家公司都走到了HR面,可以說面試的感覺上來了。前面的總結積累終究沒有白費。

想告訴大家,裁員別慌,做自己該做的,其他自己決定不了的,先放一放,心裡列一個123,一條一條來。

關鍵字: