自我介绍
1、fragment生命周期
onAttach(); onCreate(); onCreateView(); onActivityCreated(); onStart(); onResume();onPause(); onStop(); onDestoryView(); onDestory(); onDetach();
2、activity的生命周期:
onCreated(),onStart(),onRestart(),onResume(),onPaused(),onStoped(),onDestroyed()
3、android中的存储类型 :
sqlite、 sp、ContentProvider、文件、网络
查询12-18岁的人
select * from person where age between 12 and 18 and gender = male
4、startService和bindService :
执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时,直接调用onDestroy方法。调用者如果没有stopService,Service会一直在后台运行,下次调用者再起来仍然可以stopService。
执行bindService时,Service会经历onCreate->onBind。这个时候调用者和Service绑定在一起。调用者调用unbindService方法或者调用者Context不存在了(如Activity被finish了),Service就会调用onUnbind->onDestroy。这里所谓的绑定在一起就是说两者共存亡了。
5、try catch finally ,如果 try里面return了, finally 还会走吗?
会, finally的一定会执行
6、Linux进程 和线程:
进程是程序执行时的一个实例,即它是程序已经执行到各种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。
7、raw和assert中的相同点和不同点:asset可读写吗
相同点:
两者目录下的文件在打包后会原封不动的保存在apk包中。不会被编译成二进制。
不同点:
1,raw文件夹中的文件会被映射到R.java文件中。访问的时候直接使用资源id即R.id.fileName;assert不会被映射到R.java中。访问的时候需要AssertManager类。
2,raw不可以有目录结构,而assert则可以有目录结构,也就是assert下可以再建立文件夹。
8、GET、POST的区别
1、url可见性:
get,参数url可见;
post,url参数不可见
2、数据传输上:
get,通过拼接url进行传递参数;
post,通过body体传输参数
3、缓存性:
get请求是可以缓存的
post请求不可以缓存
4、后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
5、传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。
9、Arraylist 和 Linklist去别:
ArrayList是实现了基于动态数组的数据结构如果不指定大小的时候 初始大小为10,每次扩容1.5倍。
LinkedList基于双向链表的数据结构没有初始化大小,也没有扩容的机制。
对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
10、ScrollView下嵌套一个RecycleView通常会出现什么问题?
卡顿+内容显示不全
解决:
1,利用RecyclerView内部方法,设置RecyclerView不处理滚动事件
2,重写LayoutManager;
3,事件分发:基本会遵从 Activity => ViewGroup => View 的顺序进行事件分发,然后通过调用 onTouchEvent() 方法进行事件的处理。我们在项目中一般会对 MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,MotionEvent.ACTION_MOVE,MotionEvent.ACTION_CANCEL 分情况进行操作。
自己负责过哪些模块,跟同事相比自己的优势是什么?
遇到过什么印象深刻的问题,怎么解决的?
有什么想问我的。