2020面试题总结

1.app非功能测试考虑哪些方面?

1.兼容性测试(确保APP在各种终端设备、各种操作系统、网络情况下、屏幕分辨率下均可正常运行)
2.性能测试(流量测试、弱网测试、中断测试、耗电测试、压力测试、负载测试)
3.低资源测试{(当系统在重要资源(内存、硬盘空间或其他系统定义的资源)降低或完全没有的情况下会出现的状况)}

2.线程和进程的区别

什么是线程?
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

什么是进程?
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

区别在哪里?
1.进程是资源分配的最小单位,线程是程序执行的最小单位。

2.线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。

3.线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。

4.但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

5.线程没有地址空间,线程包含在进程的地址空间中。

6.子进程不对任何其他子进程施加控制,进程的线程可以对同一进程的其它线程施加控制。子进程不能对父进程施加控制,进程中所有线程都可以对主线程施加控制。

共同点在哪里?
进程和线程都有ID/寄存器组、状态和优先权、信息块,创建后都可更改自己的属性,都可与父进程共享资源、都不能直接访问其他无关进程或线程的资源

3.get和post请求的区别

GET请求和POST请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
5.get产生一个tcp数据包,post产生两个tcp数据包
6.对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
7、Get方式需要使用Request.QueryString来取得变量的值,而post方式通过Request.From来获取变量的值。

4.web和app测试的区别

1.web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。
2.web测试只要更新了服务器端,客户端就会同步会更新。app端是不能够保证完全一致的,除非用户更新客户端。
3.性能方面,web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU、GPU(图像处理器)、Memory(内存)这些
4.兼容方面,web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。app的测试不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS
5.安装方面:app是客户端的,则必须测试安装、更新、卸载。web测试是基于浏览器的所以不必考虑这些。
6.操作方面:app测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。
7.交叉事件测试:接打电话、闹铃、消息提醒、电量不足、网络切换等

5.b/s与c/s架构的区别

1.b/s:客户端只需要安装浏览器,浏览器通过Web服务器与数据库交互。
2.C / S也称为客户端/服务器,客户端需要安装专用的客户端软件。服务器通常使用高性能PC,工作站或小型计算机,并使用大型数据bai库系统,如:sql server

6.常用的adb命令

运行monkey测试adb shell monkey 100
安装adb install xxx.apk
覆盖安装adb install -r xxx.apk
卸载安装adb uninstall com.zhy.app
查看手机端所有包adb shell pm list packages
输入adb shell input text “insert%stext%shere”
查看日志adb logcat

7.单元测试、集成测试、系统测试的侧重点是什么?

1.单元测试的重点是系统的模块,包括子程序的正确性验证等
2.集成测试的重点是模块间的衔接以及参数的传递等
3.系统测试的重点是整个系统的运行以及与其他软件的兼容性

5.压力测试与负载测试的区别?

负载测试:在一定的工bai作负荷下,给系统造成的负荷及系统响应的时间。
压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。
压力测试(Stress Test): 压力测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。包括:
短时间的极端负载测试
在过量用户下的负载测试
连续执行所有能做的操作
性能测试是动力,负载测试载重,压力测试强度.

6.进程和线程分别什么时候使用?

1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。
2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应
3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;
4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;
5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2020年Android最新面试题可涵盖以下几个方面: 1. Android开发基础知识:面试官可能会问一些关于Activity、Fragment、Intent、Service、Broadcast Receiver等Android核心组件的使用和生命周期的问题。另外,也可能会问到Android布局、资源、样式和主题的相关知识。 2. Kotlin语言特性:面试官可能会问关于Kotlin语言的特性和与Java的区别,例如可空类型、扩展函数、数据类等。 3. Android Jetpack组件:Jetpack是一套为Android开发提供更简单和一致的API集合,面试官可能会询问一些关于ViewModel、LiveData、Room、Navigation等Jetpack组件的使用场景和原理。 4. 网络请求和数据解析:面试官可能会问到如何进行网络请求和数据解析,例如使用Retrofit库进行网络请求,使用Gson或者Json解析数据等。 5. 性能优化和内存管理:面试官可能会问到如何进行性能优化和内存管理,例如使用线程池管理线程,使用内存优化工具如LeakCanary检测内存泄漏等。 6. 设计模式和架构:面试官可能会问到一些设计模式和架构的相关问题,例如MVC、MVP、MVVM等架构模式的区别和适用场景。 7. Android测试:面试官可能会问到如何进行Android单元测试和UI测试,例如使用JUnit、Espresso进行测试。 8. 最新的Android开发趋势和技术:面试官可能会问到一些最新的Android开发趋势和技术,例如Flutter、Compose、Kotlin Coroutines等。 在准备面试过程中,除了对上述内容进行充分的准备,还建议查阅一些最新的Android开发资源,保持对Android开发行业的关注和学习,以便更好地回答面试官的问题。同时,注意在回答问题时展示自己的思考过程和解决问题的能力,这也是面试官关注的重点之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值