算法篇
1. 排序(冒泡、堆排序、快速排序等)
2. 二分查找
3. 判断素数
4. 单链表反转
5. 判断是否为回文数(aabb格式)
6. 十进制转换成二进制
7. 判断IP的有效性
8. 合并两个有序数组,生成一个有序的大数组,要求时间复杂度最低
9. 堆排序
10. 二叉树排序
11. 图的最短路径
当然除了上面这些基础的算法,有的面试官还会临时给个有规律的数据,让你写出一个算法或给出思路,考验下逻辑思维能力,当然如果不会也不要气馁,有的面试官会给你提供思路引导你。
10
Linux、mysql篇
以下只是一些例子,但是可能还有更多情况
1) 常用命令有哪些,包括日常看log一些命令,查看端口命令,哪个端口被占用,关闭进程,打压缩包,vim编辑命令,grep,sed,awk属于高级命令可以简单看下。
2) 数据库的增删改查
3) 数据库的关联查询
4) 数据库建立索引的优点,如何搜索数据的
11
Java/Python/shell开发语言篇
这个问题也是被问到的概率很高,主要是看你简历中写了哪些语言,以下问题都是关于Java/shell/python的
1)./ 和sh 执行shell脚本的区别
2)shell脚本中的第一行的作用是什么
3)怎么用shell脚本取出日志中倒数第二列的内容
4)lamda函数是什么
5)Python中的内存管理
6)字典、列表、元祖的区别,在内存中都是如何存储的,想要搜索数据时,各自的时间复杂度是多少
7)python怎么安装包
8)re模块中的match和search的区别
10)sokect编程
11)items,iteritems区别
12)Java中的collection
13)Java中常用的一些类库
14)Java中怎么开启线程
12
操作系统篇
一般公司不太会问这么底层的,但是360面试比较喜欢问
1) 进程,线程,协程概念区别
2) 进程同步互斥,进程间通信概念
3) 进程调度算法,死锁概念
4) 页面置换算法,makefile概念
5) 虚存,实存,共享内存
13
ADB篇
• android四大组件、activity生命周期、ANR、五种布局、Android动画原理
• adb server重启,apk的安装与卸载
• 文件的push、pull,apk的静默安装
• app的启动停止,app包查找
• 截屏、录屏,logcat,dumpsys meminfo、dumpsys cpuinfo
14
Monkey篇
• monkey命令,monkey场景重现
• 提取crash、ANR信息的方法,填加throttle参数,忽略crash和ANR
• monkey执行指定类型的事件
15
自动化篇
自动化框架包括;数据驱动,关键字驱动,数据+关键字混合,分布式,行为驱动(lettuce),具体结合自己的项目展开。
接口自动化
怎么做的接口自动化,工具有哪些,你自己怎么写的
模块接口测试
1) 检查接口返回的数据是否与预期结果一致。
2) 检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?
3) 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
4) 接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。
5) 接口的安全性,如果是外部接口的话,这点尤为重要。
Web接口
web接口测试又可分为两类:服务器接口测试和外部接口测试。
服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/ruby等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。
外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。
对于web接口测试来说有哪些测试要点:
• 1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。
• 2、检查返回数据的正确性与格式;json是一种非常创建的格式。
• 3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。
• 4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,果断弃用。(待续)