一面
1.自我介绍
2.项目负责人如何开展工作的
3.项目有几个界面 复不复杂
4.项目遇到的问题,怎么解决的
5.项目的开发的过程
1、2、3、4、5等问题,视具体情况而定
6.测试用例设计随机发红包功能
功能测试:
1,红包金额输入框是否只能输入数字和小数点,小数位数是否有限制,如果直接输入点,点前是否有0
2,红包个数输入框中是否只能输入数字
3,红包金额框输入的数字,最多200,最少0.01,如果不在该范围内是否有提示
4,红包个数框输入的数字,最多100,最少1,如果不在该范围内是否有提示
5,红包的描述框是否可以输入英文、中文、符号、数字、特殊字符、表情等,他们是否可以搭配使用,是否可以删除
6,以上提及的输入框是否允许复制粘贴操作
7,是否可以再普通红包和拼手气红包之间进行切换
8,按返回键是否可以取消发红包
9,支付过程中,是否会自动匹配支付方式,余额不足时,是否提示换卡支付,可否自己选择支付方式
10,输入支付密码时,是否可以通过密码输入或者指纹支付方式支付
11,支付成功后,是否可以自己返回到聊天界面中
12,红包发送成功后,别人能否正常领取,在个数>=2的情况下,自己是否可以领取
13,同一个人是否可以多次抢同一个红包
14,24小时后,未领取的红包是否还可以领取,未领取的红包是否会退还到原先的账户上
15,红包记录中的收发记录与实际收发记录是否一致
16,是否可以连续多次发红包
兼容性测试:
17,安卓系统、苹果系统是否都可以发红包
18,电脑端是否可以抢红包
性能测试:
19,不同网速下发红包的时间,尤其弱网情况下发红包的时间
20,发红包之后跳转到聊天界面的时间
21,发红包时的耗电量
22,退款到账时间
界面测试:
23,发红包的界面有没有错别字
24,发红包的界面是否排版合理
25,发红包的界面颜色搭配是否合理
安全测试:
26,微信号多人且异地登录,是否会有提示信息
27,红包发送成功后,是否收到微信支付的通知消息
28,红包被领取后,可领取的红包数和金额变少
29,红包发送失败,余额与银行卡中的钱不会变少
留言:
30,是否可以看见留言
7.死锁产生的条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
8.进程和线程的区别
进程是资源分配的最小单位,线程是CPU调度的最小单位
进程=火车,线程=车厢
- 线程在进程下行进(单纯的车厢无法运行)
- 一个进程可以包含多个线程(一辆火车可以有多个车厢)
- 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
- 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
- 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
- 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
- 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
- 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-“互斥锁”
- 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”
9.get和post的区别
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 配置文件设定,也可以无限大。
6、安全性
这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。
10.java访问修饰符
访问修饰符使用的关键字有三个:private(私有) ,protected(保护),public(公共)。他们既可以修饰属性,也可以修饰方法。
private:只有该类可以访问
protected:该类及其子类的成员可以访问,同一个包中的类也可访问
public:该类或非该类均可访问
默认:相同数据包中的类可以访问
11.int和integer区别
Integer是int的包装类,int则是java的一种基本数据类型
Integer变量必须实例化后才能使用,而int变量不需要
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
Integer的默认值是null,int的默认值是0
12.常用linux命令,vim查找
13.sql查询 (挺简单的)
14.查找数组里连续两个数之和最大的数,并返回该索引
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if(map.containsKey(complement)) {
return new int[] {map.get(complement), i};
} else {
map.put(nums[i], i);
}
}
return null;
}
}
15.为程序设计测试用例
16.开发人员觉得不想改bug你怎么办
如果开发人员不修改的话,无非就是几个问题。
第一个,就是需求不明确,而导致开发说我理解的需求就是这样子的,或者说需求没有明确的写出来,我认为这样子设计就OK了。
那么对于需求不明确的问题。
我们去找产品经理去进行一个确定,产品经理确定了需求是什么样子的,那开发要改就必须要修改。
开发不修改还会有一个原因。就是技术问题,现在的技术无法去修改。或者有一些问题不是通过开发人员就可以去修改的,可能还涉及到一些底层,或者说涉及到第三方公司需要提供的一些技术。对于这一类型问题,我们拿出来进行评审,之后由上面的领导说出一个解决方案。
二面
1.自我介绍
2.你的优缺点
3.优缺点具体的例子
4.之前面试过哪些
5.之前失败的原因
6.为什么选择美团,你对美团的了解
7.http header 都有啥
8反问
HR面
1.为什么选择美团
2.你的项目有没有可以做的更好的地方
3.为什么选择测开
4.你平时有什么学习的方法,具体描述
5.有没有面试其他公司,排序
6.有了解这个部门吗