阿里系的面试不同的体验还是不一样,重点还是得根据你所面试的小组所做的业务相关,高德就问了一个极具有高德特的,关于高德app体验相关的,觉得使用的时候的预估时间准不准之类的~ 有没有什么改进的建议等~
还是之前一样噢,可以先看八股自己是否会,如果不会再往下翻,有相应的答案哦~
一、自我介绍+重点的一个项目(15min)
        这里的话还是需要提前准备一下,并且需要对自己的项目比较熟悉,讲一些自己准备的比较好的点重点突出出来,这样面试官也会顺着问下去,准备了会相对来说比较自信一点,不然如果被问到一些自己没准备的问题,可能来说就会比较懵。
二、聊实习项目(12min)
  管理平台底层是c++,服务层是java?
  接口的返回侧实现了backup重传?
  具体介绍一下读接口的交互过程,你的上游网络层请求是怎么交互的?客户端控制的超时时
间?第一次返回结果后,怎么重试?
  从客户端请求到接口的交互过程是怎么样的?网络交互怎么交互完成的?有几次交互
三、八股(22min)
  正常一次http请求的过程?
  线程池中线程有几种状态?(再次提醒线程池中的状态?)
  分别介绍一下互斥锁和RCU锁以及它们的对比
  Java中有哪些对象是线程安全的对象?
  CopyonrightArrayList的底层原理?
  Jvm调优做过什么操作?
  Springboot类加载的流程知道吗?
  Mysql用的什么版本?
  如果有一张表,有id和name两个字段,id是主键,两个查询语句的where条件不一样,一个是id,一个是name,在查询上有什么区别?
  什么是回表查询?
  什么是索引覆盖?
  想实现索引覆盖,常用的手段有哪些?
  选择使用中间件的时候,什么时候会用redis?
  redis 的 string value 最大可以存多大的数据?
  除了redis 还了解其他的什么内存数据库吗?
  如果使用分布式锁,什么场景下用分布式锁?
  nx 和 ex 的参数的意义?
  底层是怎么实现? 和直接set key value有什么区别?
  先get key 如果没有这个key 就set一下,和直接setnx 是否一样?
spring boot面试题笔试题
四、java相关笔试题(7min)
用java实现读写文件,读取一个文件,到这个文件中某一行如果有“HELP”关键字,就输出这行到新的文件
五、算法(13min)
  lc7. 整数反转
六、聊天(5min)
  跨专业平常怎么学编程技术的?
  实习自己的?
  回学校准备什么?
  对工作地有什么要求吗?
  老家是哪的?
七、反问(3min)
  业务是什么?
  一共会有几轮技术面?
  今天面试结果什么时候出?
八、八股文答案
  正常一次http请求的过程?
        ①解析url,生成发送给web服务器的请求信息;② 通过dns域名解析,查询服务器域名对应的ip地址,它首先会去自己的缓存中,如果没有会从根域名服务器,顶级域名服务器,权威域名服务器依次确定;③获取到ip后,会把http的传输工作交给操作系统的协议栈去完成;④建立三次握手;⑤委托IP模块将数据封装成网络包发送给通信对象;⑥在两点之间传输,需要加上mac头部;⑦利用网卡将数字信息转换为电信号,然后在网线上传输;⑧
随后经过交换机、路由器到达下一个位置;⑨抵达服务器之后,会依次扒开mac头部、ip头部、tcp头部,得到这个请求是访问一个页面或者什么之后,把它封装到HTTP响应报文里;⑩随后依据上述路线在返回至客户端,扒皮后得到响应报文,交给浏览器去渲染页面;最后看是否是长连接,如果不是,就发起四次挥手,断开连接。
  线程池中线程有几种状态?(再次提醒线程池中的状态?)
        Running、ShutDown、Stop、Tidying、Terminated;Running能够接受新任务,并且对已添加的任务进行处理;ShutDown不接受新任务,但是能够处理已添加的任务;Stop不接受新任务,不处理已添加的任务,并中断当前正在处理的任务;Tidying当所有任务终止,线程池会变成Tidying状态; 线程池彻底终止,状态变为Terminated。
  分别介绍一下互斥锁和RCU锁以及它们的对比
        在访问共享变量时,只有一个线程能访问被互斥锁保护的资源。RCU锁则是对读写锁的改进,读写锁是只允许多个读者同时访问被保护的数据,而RCU锁则是允许多个读者和多个写者同时访问被保护的数据,RCU锁中读者需要都访问完成后才能对被保护的资源进行更新。
写者修改数据前要先拷贝个副本,然后在副本上修改,修改完毕后并不是立马更新,而是向垃圾回收器注册一个回调函数在适当的时候执行真正的修改操作。
  Java中有哪些对象是线程安全的对象?
        Vector,Hashtable,StringBuffer,Concurrent开头的,CopyOnRight开头的
  CopyonrightArrayList的底层原理?
        它是一个线程安全的List集合,采用了读写分离的思想,写操作时,先复制数组,然后在新数组上操作,最后指向新数组,读操作不加锁,并且在原数组上读,读写不冲突,但是会存在数据不是最新的情况。
  Jvm调优做过什么操作?
        根据实际情况分析所用机器的内存是否足够(调整内存的大小及机器的数量),分配给jvm的内存是否合理,以及调整新生代、老年代的比例。
  Springboot类加载的流程知道吗?
        创建SpringApplication对象,运行该对象的run()方法,包括设置,获取spring工厂实例,加载工厂名称,创建上下文,准备上下文等。
  Mysql用的什么版本?
  如果有一张表,有id和name两个字段,id是主键,两个查询语句的where条件不一样,一个是id,一个是name,在查询上有什么区别?
        一个是主键,一个普通字段,所以查询的话,一个走主键索引,只需要一次b+树查询;一个就是走普通索引,回进行回表查询,有两次b+树查询。
  什么是回表查询? 
        我们使用二级索引查到的信息并不完整,需要通过主键值再查一次聚簇索引,以到完整的数据,需要经历两次b+树查询,费时费力。
  什么是索引覆盖?
        select的字段正好覆盖二级索引的字段,也就是通过二级索引查到的信息就是我们需要
的信息,就是覆盖索引。
  想实现索引覆盖,常用的手段有哪些?
        确定查询需求,减少不必要的select;创建合适的索引,如果查询的有A、B、C,那么我们所建立的索引最好也包括A、B、C;
  选择使用中间件的时候,什么时候会用redis?
        redis作为缓存型中间件,如果我们需要使用到缓存,那么可以使用redis,同时redis也有一些丰富的数据类型,例如geo,bitmap,stream,hyperloglog,能够适用一些特殊的场合
  redis 的 string value 最大可以存多大的数据?
        512MB
  除了redis 还了解其他的什么内存数据库吗?
        couchbase,memcached
  如果使用分布式锁,什么场景下用分布式锁?
        可以防止库存超卖
  nx 和 ex 的参数的意义?
        nx指的是当数据库中的key不存在时,可以将key-value添加到数据库;ex是key的超时秒数
  底层是怎么实现? 和直接set key value有什么区别?
        直接set key value 无论有无key都可以直接设置成功,而nx只有当key不存在时,才能设置成功。
  先get key 如果没有这个key 就set一下,和直接setnx 是否一样?
        不一样,setnx是原子操作,而前面那个先get,再set不是原子操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。