校招——面试(Android岗)总结

PS:持续更新,未完待续 java

2016.8.24某为面试

  1. 自我介绍一下
  2. 链表和数组的区别web

    • 数组的存储空间是静态、连续分布的,初始化过大会形成空间浪费,太小会使空间溢出;链表的存储空间是动态分布的,只要内存有剩余空间,便不会产生溢出。面试

    • 数组查询比较快(能够根据下标直接查询),可是插入和删除比较慢;链表查询比较慢,可是插入和删除比较快(能够直接改变链表的指针)。算法

  3. 多个.c文件到二进制文件,这个过程当中编译器作了哪几阶段的工做编程

    C源程序→预编译处理(.c)→编译、优化程序→汇编程序(Windows下是.obj)→连接程序。数组

    大体是这个步骤,详细的也不是很了解,暂时不作深究了。 安全

  4. 可执行的二进制文件加载到内存中,程序里面分哪几个步骤网络

    这个多是让说java的程序的工做原理,下面先给一张java工做流程图。
    Java工做原理框架

    1. Java源程序在编译以后生成后缀名为“.class”的文件,该文件以字节码(bytecode)的方式进行编码。这种字节码其实是一种伪代码,它包含各类与平台无关的指令。Java虚拟机在字节码文件的的基础上解释这些字节码,将这些字节码转化成本地计算机的机器代码,并交给计算机去执行。
    2. Java虚拟机执行字节码的过程由一个循环组成,它不停地加载程序,而后进行合法性和安全性检测,以及解释执行,直到程序执行完毕。
  5. 二叉树的遍历

    先序遍历,中序遍历,后序遍历。

    PS:我记得当时懵逼了,直接回答的深度优先遍历,广度优先遍历。(囧,这是图的遍历好不啦)svg

  6. 程序和进程的区别
    程序只是一个静态的指令集合。而进程是一个正在系统中活动的指令集合,即进程中加入了时间的概念。进程具备本身的生命周期和各类不一样的状态,这些概念在程序中都是不具有的。
  7. 死锁产生的缘由,如何避免死锁

    死锁是指多个进程等待它方占有的资源而无限期地僵持下去的局面。

    产生死锁的缘由

    • 系统资源不足
    • 进程运行推动的顺序不合理
    • 资源分配不当

    产生死锁的四个必要条件:(必须同时具有才会产生死锁)

    • 互斥条件

      即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。

    • 不可抢占条件

      进程所得到的资源在未使用完以前,申请资源者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。

    • 占有且申请条件

      进程至少已经占有一个资源,但又申请新的资源;因为该资源已被另外进程占有,此时该进程阻塞;可是,它在等待新资源之时,仍继续占用已占有的资源。

    • 循环等待条件

      存在一个进程等待序列{P1,P2,…,Pn},其中P1等待P2所占用的某一资源,P2等待P3所占用的某一资源,…造成一个进程循环等待环。

    如何解决死锁

    有序的资源分配

  8. 你在项目中具体实现了哪些功能

  9. 你以为你的项目中有哪些难点

  10. 你以为本身的优点是什么

2016.9.8某宁面试

  1. 你作的项目用的什么框架
  2. Android的四大组件
  3. Activity的生命周期
  4. 我当前正在运行一个程序,而后我按了电源键,请问Activity通过了哪些生命周期?
  5. 广播有几种注册方式,动态注册的步骤是什么
  6. 计算机网络里通用的七层模型
  7. 网络协议,通讯协议(模型和协议的对应关系)
  8. TCP和UDP协议的区别
  9. 链表的排序和算法(你知道哪些排序算法)
  10. 冒泡排序的算法实现
  11. 冒泡排序和二分法排序哪一个效率高?
  12. Java中封装的概念
  13. Java中多态的概念,多态是用什么实现啊的实现啊的
相关文章
相关标签/搜索