新鲜出炉,阿里巴巴零售部门暑期实习一面面经

新鲜出炉,阿里巴巴零售部分Java后台开发岗暑期实习一面面经
    我是在2月22号上午十点钟接的面试电话,过程持续了大概半小时,总共十来个问题,答出来八个的样子,目前等通知。面试过程如下,如果觉得写的不错评论区一起讨论吧:

1、数组与链表的区别
    (1)数组是连续存储的,链表是散列存储的。数组随机访问性强(通过下标进行快速定位),所以数组的查询比链表要快,链表不能随机查找,必须从第一个开始遍历,查找效率低。
    (2)数组插入和删除效率低(插入和删除需要移动数据),链表插入删除速度快(因为有next指针指向其下一个节点,通过改变指针的指向可以方便的增加删除元素)

2、堆内存与栈内存

    一 方法区(Method Area)
    1. 什么是方法区(Method Area)?
    《深入理解JVM》书中对方法区(Method Area)描述如下:
    方法区(Method Area)与Java堆一样,是各个线程共享的内存区域。
    2.方法区(Method Area)存储什么?
    《深入理解JVM》书中对方法区(Method Area)存储内容描述如下:
    它存储已被Java虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等

    二 堆
    Java堆(Java Heap) :被所有线程共享的一块内存区域,在虚拟机启动时创建。Java堆(Java Heap)唯一目的就是存放对象实例。所有的对象实例及数组都要在Java堆(Java Heap)上分配内存空间。

    1、栈内存用来存放基本类型的变了和引用变量,堆内存用来存储java中的对象,无论是成员变量,局部变量,还是类变量,他们指向的对象都存储在堆内存中。
    2、栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属的线程中可见,即栈内存可以理解成线程的私有内存;堆内存中的对象对所有线程可见。堆内存中的对象可以被所有线程访问。
    3、如果栈内存没有可用的空间存储方法调用和局部变量,JVM会抛出java.lang.stackoverflowerror 错误;如果是堆内存内有可用的空间存储生成的对象,jvm会抛出java.lang.outofmemoryerror错误。
    4、栈的内存要远远小于堆内存,如果你使用递归的话,那么你的栈会很快充满。-Xss设置每个线程堆栈内存的大小  -Xms可以设置堆内存开始时的大小。
  简单总结如下:
    JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。

3、进程与线程的区别
    1.进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.
    2.一个程序至少有一个进程,一个进程至少有一个线程.
    3.进程是资源分配的最小单位,线程是程序执行的最小单位。
    4.一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.
    5.进程与进程之间的交互通过TCP/IP的端口来实现,线程的通信就比较简单,有一大块共享的内存,只要大家的指针是同一个就可以看到各自的内存。
    操作系统真正运行的是一个个的线程,而进程可以看做是线程的一个容器。


4、tcp与udp的区别
    1. TCP是面向连接(Connection oriented)的协议,UDP是无连接(Connection less)协议;
    TCP用三次握手建立连接:1) Client向server发送SYN;2) Server接收到SYN,回复Client一个SYN-ACK;3) Client接收到SYN_ACK,回复Server一个ACK。到此,连接建成。UDP发送数据前不需要建立连接。
    2. TCP可靠,UDP不可靠;
       TCP丢包会自动重传,UDP不会。 
    3. TCP有序,UDP无序;
       消息在传输过程中可能会乱序,后发送的消息可能会先到达,TCP会对其进行重排序,UDP不会。
     
    4. TCP无界,UDP有界;
        TCP通过字节流传输,UDP中每一个包都是单独的。     
    5. TCP有流量控制(拥塞控制),UDP没有;
       主要靠三次握手实现。以及慢开始、拥塞避免、快重传、快恢复 
    6. TCP传输慢,UDP传输快;
       因为TCP需要建立连接、保证可靠性和有序性,所以比较耗时。这就是为什么视频流、广播电视、在线多媒体游戏等选择使用UDP。
    7. TCP是重量级的,UDP是轻量级的;
       TCP要建立连接、保证可靠性和有序性,就会传输更多的信息,如TCP的包头比较大。 
    8. TCP需要更多资源,UDP则要好上很多
    9. 应用场合不同:TCP一般应用在对可靠性要求比较高的场合,例如http,ftp等等。而UDP一般应用在对实时性要求较高场合,例如视频直播,大文件传输等等 
    小结:
    TCP是面向连接的、可靠的、有序的、速度慢的协议;UDP是无连接的、不可靠的、无序的、速度快的协议。TCP开销比UDP大,TCP头部需要20字节,UDP头部只要8个字节。TCP无界有拥塞控制,TCP有界无拥塞控制。

5、完全二叉树与满二叉树
    满二叉树:指深度为k且有2^k-1个结点的二叉树。节点的编号按照层序遍历的顺序曾旭排列。
    完全二叉树:当二叉树的深度为h时,它的h层节点必须都是连续靠左并不可隔开的(满二叉树也符合),并且1~h-1层的结点数都达到最大个数(即1~h-1层为一个满二叉树)。
    
6、hashmap的底层实现
    这个是高频考点,大家应该都会就不写了

7、jvm的类加载器
    当程序使用某个类时,如果该类还未被加载到内存中,则系统通过加载,连接,初始化三个步骤来实现对这个类的加载。分别介绍这三个步骤。。。
    简单说了下类加载的时机,和三种常见的类加载器。

8、常用的数据库是啥,建索引大的两种方式,建立一个树形结构部门表该如何设计
    (1)CREATE INDEX indexName ON mytable(username(length));
    (2)ALTER table mytable ADD UNIQUE [indexName] (username(length))
     建表这问不知道他是想问啥,就说自己没设计过,不会

9、简单说说你做过的比较好的项目
    简历里面的项目聊了聊

10、平时会逛逛哪些论坛
    就说平时喜欢逛牛客,LeetCode也有刷题
#实习##阿里巴巴##Java工程师##面经#
全部评论
一面有算法题吗
1 回复
分享
发布于 2020-02-26 12:43
我今天面试最后给了我一道多线程的题 没做出来 爱情。希望楼主好运!
1 回复
分享
发布于 2020-02-26 18:11
联想
校招火热招聘中
官网直投
点赞 回复
分享
发布于 2020-02-24 23:35
强,突击了几天还是有些不会,都知道可能说不出来
点赞 回复
分享
发布于 2020-02-24 23:38
今天也是一面阿里,面了80分钟,问了项目 操作系统 cpp语法还有网络,没准备好,数据库也不会,直接凉了
点赞 回复
分享
发布于 2020-02-24 23:45
什么叫建一个树形结构部门表
点赞 回复
分享
发布于 2020-02-25 00:45
太棒啦,谢谢
点赞 回复
分享
发布于 2020-02-25 06:04
楼主啥时候投的
点赞 回复
分享
发布于 2020-02-25 08:33
请问楼主是21届的吗
点赞 回复
分享
发布于 2020-02-25 10:27
在哪投的简历啊
点赞 回复
分享
发布于 2020-02-25 20:06
没有问算法题吗
点赞 回复
分享
发布于 2020-02-26 12:37

相关推荐

头像
点赞 评论 收藏
转发
23 113 评论
分享
牛客网
牛客企业服务