zoukankan      html  css  js  c++  java
  • 阿里巴巴面经

    我晚上刚健完身,然后去外面吃了一顿猪脚饭。正准备吃呢,突然来了一个浙江杭州的电话。

    然后就开始了我惨无人睹的电话一面(人生中第一次面试竟然是阿里巴巴)

    1. 项目:Java高并发秒杀系统

    如何优化:
    用了redis缓存,spring的声明式事物

    2. Java基础知识

    ConcurrentHashMap你知道多少
    Java基本数据类型(byte, short, int, long, float, double, boolean, char)
    接口实现接口用extends
    Java垃圾回收机制(标记清除算法, 标记复制算法, 标记整理算法)
    类加载机制:“通过一个类的全限定名来获取描述此类的二进制字节流”,双亲委派模型
    启动类加载器 -> 扩展类加载器 -> 应用类加载器
    线程如何同步(volatile + JMM模型,锁也行)
    Java是静态语言

    3. 数据结构

    图遍历(dfs + bfs)
    二叉树特性:
    性质1:在二叉树的第i层上至多有2i-1个结点(i≥1)。(数学归纳法可证)
    性质2:深度为k的二叉树最多有2k-1个结点(k≥1)。(由性质1,通过等比数列求和可证)
    B树和B+树的区别:
    由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,
    但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫
    ,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引,而B树则常用于文件索引。

    4.计算机网络

    osi七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
    三次握手四次分手
    http协议(HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写)
    HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
    HTTP是一个无状态的协议。
    HTTP 5xx状态码(服务器内部错误)

    5.算法

    链表反转用O(n)复杂度 剑指Offer原题,用三个指针(left, mid, right三个指针)

    6.总结

           其实说实话问的都很基础。但由于我复习还没有到位,而且很多东西都忘了。

      而且当时我在吃猪脚饭,外面的车和人呼呼的过,太吵了,很多都没有听清。

      答是答出来了,但很多没有答全,而且细节也没有答好,感觉要GG

    第二次流程:

    一面(2018年4月17日):

    1: 项目:redis放到MySQL这中间一段时间,如果有大量用户涌进怎么办

    2: TCP三次握手过程

    3: 第二次握手出现问题怎么解决?

      ans: 超时重传机制。大概5次就认为失败了。

    4: 第三次握手出现问题怎么解决?

      ans: 此时客户端认为连接已经建立了,但由于第三次失败,那么服务器端就没有建立连接。服务器端就会多次催促客户端,我还需要一个ack。如果多次请求收不到,那么就认为此次三次握手失败了。

    5: 滑动窗口

    6: arraylist多线程扩容。

      ans: 可以直接抛出一个异常给客户端 (尽早的抛出错误,这是面试官一直想要的答案,但我一直没get他的点,很伤神。)

    7: arraylist for循环的时候删除元素

    8: HashMap for循环删除元素

    9: redis持久化

      ans: RDB,fork子线程定时执行。AOF,类似于添加日志,添加一条执行一条

    10: MySQL底层索引用的什么结构

    11: 设计模式

    12: jvm内存怎么管理的。

      ans: 栈 + 堆。堆又分为新生代和老年代。新生代又分为Eden + from survivor+ to survivor

    13: 线程池 (newFixedThreadPool, newCachedThreadPool, newSingleThreadExecutor, newScheduledThreadPool)

    14: 线程池拒绝策略。(抛异常,不抛异常,LRU抛弃最早的,阻塞主线程,用主线程来执行)

    二面(2018年4月20日)

    1: MySQL存储引擎 (InnoDB)

    2: 索引结构 (B+树) 是否为平衡树?

    3: 树的遍历

    4: explain命令

    5: 谈一下对Spring框架的理解 (IoC, AOP)

    6: AOP底层如何实现 (HandlerInvole, MethodIntercepter)

    7: Spring的单例 是否为线程安全? 看bean的具体类

    8: HashMap是否为线程安全

    9: JVM模型

    10: volitile有没有了解过?

    11: 代码如何编译打包部署?maven用过没有?

    12: 没有eclipse如何编译Java代码?

    13: ant有用过么?

    14: rpc远程调用有没有用过?

    15: Java中的锁

    16: 死锁产生有没有了解?

    17: 如何避免死锁?

    18: 最近在看什么计算机的书?

    19: 本科没有想到去读硕士嘛?

    20: 什么时候可以实习?

    hr面(2018年4月24日)

    1: 内部推荐?谁推荐?

    2: 大三没有考研的打算?

    3: 成绩如何?

    4: 你之前有过什么实践的经历?

    5: 除了在公司,有没有跟着老师做一些项目?

    6: 自己找了什么项目来做

    7: 项目做了多久

    8: 大学学习计划如何

    9: 以后想往什么的方向,为什么?

    10: 怎么达成这个目标

    11: 周围有没有特别崇拜的技术牛人

    12: 参加acm成绩不理想的原因?

    13: 周围人怎么评价你,你自己怎么评价你

    14: 你在校最要提升的是什么

    15: 实习计划

    16: 你有什么问题

  • 相关阅读:
    [Git & GitHub] 利用Git Bash进行第一次提交文件
    Linux下 Unison 实现文件双向同步
    Linux SSH使用公钥私钥实现免登陆
    SSH自动断开连接的原因
    hosts.deny 和hosts.allow 配置不生效
    bind启动时提示953端口被使用
    Linux查询系统配置常用命令
    Linux 查硬件配置
    BIND rndc—使用说明
    rndc 错误解决 和 远程配置
  • 原文地址:https://www.cnblogs.com/wenbochang/p/8483242.html
Copyright © 2011-2022 走看看