面试题

自我介绍

1、fragment生命周期

onAttach(); onCreate(); onCreateView(); onActivityCreated(); onStart(); onResume();onPause(); onStop(); onDestoryView(); onDestory(); onDetach();

2、activity的生命周期:

onCreated(),onStart(),onRestart(),onResume(),onPaused(),onStoped(),onDestroyed()

1.启动Activity:onCreate、onStart、onResume。
2.被覆盖其上或被锁屏:调用onPause。
3.被覆盖状态回到前台或解锁屏:onResume。
4.ActivityA跳B或按Home键回到主屏:onPause、onStop。
5.回退Activity:onRestart、onStart、onResume。
6.退出当前Activity:onPause、onStop、onDestory。

如何启动一个Activity,说一下你了解的办法?
对adb命令掌握多少,常用的adb命令有哪些?
adb logcat、adb devices、adb shell、 adb shell pm list packages (-3)、adb shell ping www.XXX.com、adb shell ps | grep 包名、adb shell dumpsys window | grep mCurrentFocus

3、android中的存储类型 :

sqlite、 sp、ContentProvider、文件、网络
查询12-18岁的人
select * from person where age between 12 and 18 and gender = male
多表联查
select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx 关键字 join on
查询人员表里边查询同一天生日的具体有哪些人都在哪一天
select name, birth from person where birth in (select birth from person group by birth having count(birth)> 1) 关键字 group by、having
数据库查询分页:limit

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 还会走吗?

在这里插入图片描述
图片中的会怎样执行,执行顺序是什么? 先执行2在执行3,1不执行。
try return以后, finally的一定会执行

6、Linux进程 和线程:

进程是程序执行时的一个实例,即它是程序已经执行到各种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。

线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

7、raw和asset中的相同点和不同点:asset可读写吗(可读不可写)

相同点:

两者目录下的文件在打包后会原封不动的保存在apk包中。不会被编译成二进制。

不同点:

1,raw文件夹中的文件会被映射到R.java文件中。访问的时候直接使用资源id即R.id.fileName;asset不会被映射到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要移动数据。

map多线程操作为什么会有线程安全问题, currnetHaspMap如何保证线程安全?
是否了解过AtomicInteger?

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 分情况进行操作。

自己负责过哪些模块,跟同事相比自己的优势是什么?

你和同事、领导的意见产生分歧时,会如何处理?

遇到过什么印象深刻的问题,怎么解决的?

有什么想问我的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值