我投的京东科技,结果是京东物流面的我,base北京大兴    真的答的很差,磕磕巴巴的,好多问题一问3不知,面试官很有耐心,一个劲的引导我       1、自我介绍    2、在线编程,输出1到100的素数,我写了一个最简单的,面试官让我优化一下,我优化不出来·····    自己总结了一下:           常规方法(最低效)      思路说明:从2开始,一旦出现能整除的,就表示不是素数,如果从2开始到本身之前都没有整除的,说明就是素数,这一解法从数组本身的定义出发的。    缺点:当数字较大时,循环次数太多,所以不建议使用。     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,如果都没有被整除,就是素数,否则就不是。和第二种方法类似,但是效率相对更高,推荐使用。 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层协议(面试官说我背的挺熟,这种问题还是说的灵活一点比较好)    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和表单的区别   form格式是一种“键值对”的数据格式,比如:   a=1&b=2&c=3   而json格式则类似这样:   {"a":1,"b":2,"c":3} 表单传递的数据到后台是key-value的形式,json提交之后,后台收到的是字符串,需要注解来解析。 18、在黑盒测试的角度如何提高抢票成功率(真不会,面试管特别耐心的引导我,我还是不会)   
点赞 7
评论 9
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务