2020阿里测开暑期实习3.30一面

感觉太久没面试了,面试的时候有点慌,全程20分钟左右,感觉要凉了😌

视频面试:
1. 自我介绍
简单个人信息+比赛经历+训练营经历+实习经历
2.平时用什么语言多
说主要用C++(其实很菜。。。),Java也了解
3.Java和C++区别
Java和C++的区别:
(1). Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。
(2). C++是编译型语言,所谓编译型语言,就是源码一次编译,直接在编译的过程中链接了,形成了机器码。
(3). C++比Java执行速度快,但是Java可以利用JVM跨平台。
(4). Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。
(5). C++中有指针,Java中没有,但是有引用。
(6). C++支持多继承,Java中类都是单继承的。但是继承都有传递性,同时Java中的接口是多继承,类对接口的实现也是多实现。
(7). C++中,开发需要自己去管理内存,但是Java中JVM有自己的GC机制,虽然有自己的GC机制,但是也会出现OOM和内存泄漏的问题。C++中有析构函数,Java中Object的finalize方法。
(8). C++运算符可以重载,但是Java中不可以。同时C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。

4.C++内存管理

(1)、栈区:函数中定义的局部变量放在栈中,函数执行结束时存储单元自动释放。栈内存分配一般采用寄存器来存取,存取效率高但是内存容量有限。
(2)、堆区:通常在堆中进行动态分配。程序运行的时候用new或malloc申请一定大小的内存,用delete或free释放之前申请的内存。不管内存空间在何时申请,只要没有用delete或free释放该内存空间就一直被占用着。也就是说,动态内存分配的变量的生存周期由程序员自己决定。程序利用new或malloc申请了一块内存,用完之后没有释放掉,这样这块内存就失去了控制,这就造成了内存泄露。
(3)、全局代码区:这块内存区域存放的是全局变量、static变量。内存在程序编译的时候就已经分配好,在程序的整个运行期间都存在。在C语言中,全局变量区又分为初始化的和未初始化的。在C++中没有这种区别,它们共同占用这块内存区域。
(4)、常量区:存放的是常量,不允许修改。
(5)、程序代码区:存放整个程序的代码。注意,数据和代码是分开存储的。

  • Java内存区域划分:

(1).栈:
在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配。栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

(2).堆:
通过new生成的对象都存放在堆中,对于堆中的对象生命周期的管理由Java虚拟机的垃圾回收机制GC进行回收和统一管理。优点是可以动态分配内存大小,缺点是由于动态分配内存导致存取速度慢。

(3).方法区:
是各个线程共享的内存区域,它用于存储class二进制文件,包含了虚拟机加载的类信息、常量(常量池)、静态变量(静态域)、即时编译后的代码等数据。

1).常量池:
常量池在编译期间就将一部分数据存放于该区域,包含以final修饰的基本数据类型的常量值、String字符串。

2).静态域:
存放类中以static声明的静态成员变量。

3).程序计数器
当前线程所执行的行号指示器。通过改变计数器的值来确定下一条指令,比如循环,分支,跳转,异常处理,线程恢复等都是依赖计数器来完成。


5.学校成绩
6.数据结构
7.叫我提问问题

#阿里面试##阿里巴巴##实习##面经##测试开发工程师#
全部评论
楼主情况如何?我二面也是二十多分钟,官网只是显示面试中,都过去好几天了
点赞 回复 分享
发布于 2020-04-03 17:43
都是视频面吗 我还以为是电话面😥
点赞 回复 分享
发布于 2020-04-03 10:04
没有让楼主做编程题吗?
点赞 回复 分享
发布于 2020-04-02 11:21

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了 8 个 offer,最高年包 40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
评论
3
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务