京东测开一面面经2022.9.6
我投的京东科技,结果是京东物流面的我,base北京大兴
真的答的很差,磕磕巴巴的,好多问题一问3不知,面试官很有耐心,一个劲的引导我
1、自我介绍
2、在线编程,输出1到100的素数,我写了一个最简单的,面试官让我优化一下,我优化不出来·····
自己总结了一下:
- 常规方法(最低效)
缺点:当数字较大时,循环次数太多,所以不建议使用。
public static void main(String[] args) { for(int i=1;i<=100;i++){ for(int j=2;j<i;j++){ if (i%j==0){ break; } } if(i==j){ System.out.print(i + "、"); } } }2、稍微高效的方法(x/2)
思路说明:
将循环范围定在2到指定数的二分之一(原理:任何一个数的最大因数都小于等于它的二分之一,所以只要从2查找到x/2,如果都没有被整除就是素数,因为到这里已经查找到他的最大因数了。
例如24的最大因数为12,100的最大因数为50.)这样就会减少循环次数。
缺点:效率提高了不少,但也并不是最优解。
缺点:效率提高了不少,但也并不是最优解。
public static void main(String[] args) { for(int i=1;i<=100;i++){ for(int j=2;j<=i/2;j++){ if (i%j==0){ break; } } if(j>i/2){ System.out.print(i + "、"); } } }3、高效方法(根号x)
思路说明:
其实只要把循环一直从2尝试到根号x就可以,不难发现,一个数的两个因数中,毕然有一个小于等于根号x,一个大于等于根号x,例如100的因数有:1和100,2和50,4和25,5和20,10和10.所以只要从2尝试到根号x,如果都没有被整除,就是素数,否则就不是。和第二种方法类似,但是效率相对更高,推荐使用。
其实只要把循环一直从2尝试到根号x就可以,不难发现,一个数的两个因数中,毕然有一个小于等于根号x,一个大于等于根号x,例如100的因数有:1和100,2和50,4和25,5和20,10和10.所以只要从2尝试到根号x,如果都没有被整除,就是素数,否则就不是。和第二种方法类似,但是效率相对更高,推荐使用。
public static void main(String[] args) { for(int i=1;i<=100;i++){ for(int j=2;j<=Math.sqrt(i);j++){ if (i%j==0){ break; } } if(j>Math.sqrt(i)){ System.out.print(i + "、"); } } }
3、索引
4、哪些情况下索引不能升性能
5、索引的种类
主键索引:数据列不允许重复,不能为NULL,一个表只能有一个主键索引 组合索引:由多个列值组成的索引,列值的组合必须唯一。 唯一索引:数据列不允许重复,可以为NULL,索引列的值必须唯一的,如果是组合索引,则列值的组合必须唯一。 全文索引:对文本的内容进行搜索。6、索引在什么情况下会失效
7、什么是redis
8、如何保证Redis和MySQL 的数据一致性
我说:先更新数据库后删除缓存这种方案用的多些 (旁路缓存模式)。面试官说,这只是一种场景,不同的场景有不同的方式
9、计算机的5层协议(面试官说我背的挺熟,这种问题还是说的灵活一点比较好)
9、计算机的5层协议(面试官说我背的挺熟,这种问题还是说的灵活一点比较好)
10、网络中二层转发和三层转发的区别
1.数据转发依靠的关键字不同,二层转发主要依靠MAC地址,而三层转发主要依靠IP地址。 2.数据交换的范围不同,二层交换指在同一网段内的通信,三层交换指跨网段的通信。 3.在三层转发的过程中,还要进行二层的封装。也就是说,在三层转发过程中二层帧头中的(源、目的)MAC地址是要改变的。但是IP数据报中的源IP和目的IP地址是不会改变的11、一个局域网之间,两台主机相互通信,是二层转发还是三层转发?(真的不会)
面试官解答:一个交换机内部属于二层转发,交换机之间属于三层转发12、TCP 3次握手和4次挥手
13、为什么是3次和4次呢
14、tcp和udp的区别
15、http协议的get和post区别
16、get和post本质区别
GET产生一个TCP数据包;POST产生两个TCP数据包。
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
- 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
但是GET与POST都有自己的语义,不能随便混用。
17、json和表单的区别
18、在黑盒测试的角度如何提高抢票成功率(真不会,面试管特别耐心的引导我,我还是不会)form格式是一种“键值对”的数据格式,比如:
a=1&b=2&c=3
而json格式则类似这样:
{"a":1,"b":2,"c":3}
表单传递的数据到后台是key-value的形式,json提交之后,后台收到的是字符串,需要注解来解析。