安卓应用开发心得体会 安卓应用开发软件

回顾一下自己这段时间的经历,九月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷 。到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人 。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考 。
文末有近年来,我和一些朋友面试收集整理的一些大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料 。在这里分享出来,希望可以帮助更多的朋友们拿到中意的Offer 。
如果你有需要的话可以私信我(面试)我分享给你 。
一般Android面试分为两部分:Java部分和Android部分,下面说一下自己面试过程遇到的一些具体题目和一些相关知识点 。
一 JAVA相关1)JAVA基础java基本数据类型有哪些,int,long占几个字节== 和 equals有什么区别hashcode 和 equals作用new String创建了几个对象位运算符的一些计算java的拆装箱compareable 和 compartor的区别下面列一两个遇到的题吧
基本数据类型,int大小,一个字节占几位, int的取值区间 。Integer a = 123456Integer b = 123456return a==b 如果a = a b = 1 结果呢int a = 2;int rusult = a++ + 4<<2求 result的值public static String fun(String s) {        return s.length() < 0 ? (fun(s.substring(1) + s.charAt(0))) : "";    }System.out.println("result = " + fun("Smart"));它的打印结果是什么 。类似这种的题很多,考察的都是基础知识的牢固性 。所以需要自己多巩固基础 。
2)数据结构和算法常见的数据结构就是:数组,栈,队列,集合,映射,链表,堆,二分搜索树,红黑树 。当然还有其他的一些,比如AVL平衡树等一些数据结构 。
我们要做的就是了解它们的实现原理和各自的优缺点 。
数据结构部分面试遇到最多的就是:
ArrayList和LinkedList的区别,优缺点hashmap实现,扩容是怎么做的,怎么处理hash冲突,hashcode算法等链表需要知道 。LinkedHashMap一般再问LRU的时候会问到二分搜索树的特性和原理 。前中后序遍历写出其中一种,当问到二分搜索树的缺点的时候,你需要提出基于二分搜索树的红黑树,说出他的特性 。堆的实现,最大堆,最小堆,优先队列原理 。算法算法其实就是我们平时常见的一些排序:选择排序,插入排序,冒泡排序,希尔排序,归并排序,快速排序 。以及和数据结构相关联的解决部分问题的一些计算方法 。
算法面试遇到的一些题:
手写快速排序,插入排序,冒泡排序翻转一个数字翻转一个链表O(n)复杂度找出数组中和是9的两个数的索引写出二分搜索树前中后序遍历中的其中一个实现一个队列,并能记录队列中最大的数 。算法这一块是需要练习的推荐去Leetcode上面刷刷题,开拓一下思维 。算法也并不一定要求你能写出来,主要考察你的思路,已经如何优化你的算法 。
【安卓应用开发心得体会 安卓应用开发软件】3)JVM虚拟机JVM虚拟机我们需要知道他们内部组成:堆,虚拟机栈,本地方法栈,方法区,计数器 。每一块都存放什么东西,以及垃圾回收的时候主要回收哪些块的东西 。GC-ROOT链是从哪些地方开始的,垃圾回收集算法(很少遇到问的) 。
类加载ClassLoader已经双亲委派机制,类加载的过程,类加载的信息对应在JVM的哪些块中 。
列一个遇到的类加载的面试题:
public class TestClassLoader {    static class Father {        public static final String TAG = "Father";        static {            System.out.println("static Father");        }        {            System.out.println("unStatic Father");        }        public Father() {            System.out.println("constract Father");            method();        }        public void method() {            System.out.println("method Father");        }        @Override        public String toString() {            return "toString Father";        }    }    static class Son extends Father {        public static Son instance = new Son();        static {            System.out.println("static Son");        }        {            System.out.println("unStatic Son");        }        public Son() {            System.out.println("constract Son");            method();        }        public void method() {            System.out.println("method Son");        }        @Override        public String toString() {            return "toString Son";        }    }    public static void main(String