初级android面试经验1.0
给一些自学或者刚刚开始找工作而且向我一样对概念头疼人的初级面试经。
今天去面试了,面试了58分钟,总体感觉还可以,问了我数据结构·java·android三方面,虽然基本都问的是android项目中所用的技术,与一些实用的技术,但是也是有一些是一些我们需要知道的概念的东西,而那些东西博主就很蒙啦,给大家也分享一下,但是因为是第一个技术面,都比较基础(虽然是面试完才知道是基础的<超级难过>),如果有幸到二面的话(还内心存有希望的博主)会给分享一些深层次的面试。
-
java中的基础
java的8种数据类型和所占字节:
-
byte 8位 整型 1字节
-
short16位 整型 2字节
-
int32位 整型 4字节
-
long64位 整型 8字节
-
float单精度32位 4字节
-
double双精度64位 8字节
-
char字符16位 2字节
-
boolean8位 java环境中1字节(boolean型比较特殊在不同编译环境中的所用字节不同)
数据结构中的基础:
1.冒泡排序:
冒泡排序的原理很简单估计也不会问,但还是说一下把,简单来说就是两两比较把最大的放到最右边,然后依次进行直到剩下最后一个数即为完成。
当时面试的时候问的是时间复杂度与空间复杂度:
时间复杂度:为算法所用的时间,这只是定义而已说白了就是代码中算法语句执行的次数。在冒泡排序中时间复杂度为O(n^2)(就是n的2次方的意思).
空间复杂度:是对一个算法在运行过程中临时占用存储空间大小的量度,在冒泡排序中空间复杂度为O(1)
2快速排序:
快速排序的基本思想就是选出一数字,使这个数字左边比他小右边比他大,再对左右边进行相同的操作,直到无法在分为止,这个思想问的应该是很多,但这只是思想,具体实现的代码也不知道会不会问,这里就不贴代码了,网上有很多,基本都很详细,看一下就懂啦.
这里顺便说一下,快速排序的时间复杂度为O(nlogn),空间复杂度O(log2n),也不难记下来也是可以的.
//刚才上网上查了一下,其实时间和空间复杂度是由,最好与最差的,而这里博主指出的都是平均的时间空间复杂度.
3.进程与线程
进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。
进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。
一个进程内可拥有多个线程,进程可开启进程,也可开启线程。
一个线程只能属于一个进程,线程可直接使用同进程的资源,线程依赖于进程而存在。
4 .一些需要直到定义的小知识点:
栈:撤回操作,把之前的应用状态,保存在内存中,最后保存的最先出来,为LIFO即先进后出。(LIFO为Last in, First out.后进先出)
队列:与栈相似,都是线性储存数据他用了FIFO方式,采用先进先出。(FIFO为First in, First out.先进先出)
链表:是一系列结点组成的链,也是线性结构,每个节点都有数据,以及指向下一个节点的指针。链表头指针指向第一个节点。
5 .二叉树的遍历:
这里推荐记下来的有3中常用的:
先序遍历:首先访问根,再先序遍历左子树,最后先序遍历右子树
中序遍历:首先中序遍历左子树,再访问根,最后中序遍历右子树
后序遍历:首先后序遍历左子树,再后序遍历右子树,最后访问根
//其实还有一种层次遍历,博主也不太懂这里只能搬度娘的知识啦:
层次遍历:即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同) -
android的一些基础知识:
由于博主是自学,也没人普及这些基础知识,还是更关心成果而忽视了这些最基础的东西,面试真的是吃亏了啊<大哭>
1.Activity生命周期
onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()
生命周期的延申知识:https://blog.csdn.net/qq_29226403/article/details/103492809
2.service的生命周期
有两种方式:
一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启动。不同的启动方式他们的生命周期是不一样.
1.startService()为startService() --> onCreate()–> onStartConmon()–> onDestroy()。
2.bindService()为bindService–>onCreate()–>onBind()–>unBind()–>onDestroy()
3.从一个Activity返回到上一个Actvity是在哪个生命周期中执行的
先第一个的onPause()被调用然后是第二个Activity的初始化流程(onCreate()–>onStart()–>onResume()–>)然后在调用第一个的onStop()调用.
其他:
Git的常用命令:
git clone xxxxx(地址)克隆代码库
git pull 更新
git push 提交
--------------------------------- 这些就是当时面试遇到的一些定义题啦,当然还有android的4大基本组件,还要具体说明,这个感觉是基本操作就没在上边说,然后就是一些项目中用的一些第三方的库啦.自己多做一些就了解记住啦,也不是很难的.
如果有错误欢迎指正,这些答案也是博主在网上找到的,会随时关注的,如果有错误会随时改正的.
//第一次用CSDN的创作中心,可能做的有点丑,因为现在找工作比较忙,
等找到之后一定找一个时间细心学习一下的,争取做出很精美的画面来的.