面试复盘 | 阿里阿里云Java实习一面面经

日期:2022/3/8
时间:30min
因为没有录音,很多问题可能不准确,问的很基础但是答得不是太好所以凉了。答案是我在网上搜集到的,如有错误还请私信我或者评论指正感谢。
  • 1.自我介绍
  • 2.学校中的经历
  • 3.C和Java的区别,各自的优势,为什么要从C语言开始学
    • C和Java的区别
      • 1、语法不同;
      • 2、单文件的编译时间java比C语言快;
      • 3、C语言可以直接操作内存,java不能直接操作;
      • 4、C语言可以封装动态库,java不行;
      • 5、C语言的代码不容易跨平台,java的代码容易跨平台;
      • 6、C语言有指针,java没有指针;
      • 7、C语言可以直接操作串口,java需要第三方jar包支持;
      • 8、C语言的线程更加灵活,java的线程都已经封装好了;
      • 9、C语言做单独功能,可以增加效率,java适用做web应用开发;
      • 10、unix是C语言编写的,java也是C语言编写的;
      • 11、JAVA做web开发的时候,已经有很多成型的框架技术,C语言很少,且需要处理底层内容,对应不熟悉计算机原理的开发者难度很大;
      • 12、JAVA的开源包太多了,C语言也有但是偏少,而且面向某个业务应用领域的框架没java多;
    • 各自的优势
      • 1.C语言是面向过程语言,Java是面向对象语言。
      • 2.Java与C语言相比,Java具有简单、面向对象、分布式、健壮、可移植、解释性、稳定、多线程、垃圾回收等等特点。而对于C语言则是一个比较宏观的领域,因此Java可以说是C语言的基础上开设,即C语是基石,Java在时下的运用和使用方面就比较丰富。
      • 3.对于Java来说C语言是基石,Java是在C的基础上搭建的。
    • 为什么Java中的一些功能是C编写的
      • Java离不开JVM,JVM是C语言编写的
  • 4.为什么说C语言中指针是非常危险的
  • 5.Java中浮点数和定点数的区别
    • 把一个数翻译成二进制,小数点的位置是固定的,如果是整数则固定在最右方,如果是纯小数则固定在最左方,而浮点数的小数点是可以移动的,也就是说,比如.00000001这个就是纯小数,而00000001.这个就是纯整数,注意小数点的位置,是不可以移动的,而浮点数的小数点的位置是不确定的
  • 6.Java中long和double所占的字节都是64位,为什么double所能表达的数据范围比long大
    • long是整型,64位的长度只有一位是符号位,其他位都用来表示整型的数字。而double是浮点型,由阶码,符号位和尾数构成,他们共同64位,当然他们的最大值不一样了
    • 扩展:浮点型在内存中的存储方式
      • 第一位为符号位表示正负号
      • 之后八位为指数位
      • 最后的位数表示有效数字

  • 7.抽象类和接口的区别,实际开发中是接口用的多还是抽象类用的多
    • 总结:接口比抽象类更加抽象
    • 1.语法上的区别
      • 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
      • 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
      • 3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
      • 4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
    • 2.设计上的区别
      • 1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 "是不是"的关系,而 接口 实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。
      • 2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和ppt C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。
  • 8.内部类和外部类的区别,用内部类的好处是什么
    • 1.在内部类中可以随意使用外部类的成员方法以及成员变量。
    • 2.要在外部类中实例化内部类对象的引用。
    • 3.成员内部类中成员方法与成员变量的私有性。
    • 4.使用this关键字获取内部类与外部类对象的引用。
  • 9.Java的执行过程
    • 第一步:将java源码(.java文件)通过编译器(javac.exe)编译成JVM文件(.class文件)
    • 第二步:将JVM文件通过java.exe执行,输出结果
  • 10.机器语言和汇编语言和Java语言之间的关系
    • 1.汇编语言:汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
    • 2.机器语言:它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。
    • 3.Java语言:它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。
    • 4.流程:
      • Java语言 -> 汇编语言 ->机器语言
  • 11.SpringBoot的启动方式(没太明白面试官的意思)
    • 1. 运行带有main方法
    • 3. 通过spring-boot-plugin的方式
  • 12.项目中Redis的设计
  • 13.Linux的配置  
总结:基础很重要,简历中写的一定要会!最后希望内推大佬们有HC的话麻烦联系我,还是0offer太焦虑了。

#面试复盘##面经##实习##阿里巴巴##java工程师#
全部评论
回答的这么详细都凉了
2
送花
回复
分享
发布于 2022-03-09 16:44
同学流程走完的话我们这边可以捞一下哦,我们也是阿里云
点赞
送花
回复
分享
发布于 2022-03-09 17:57
滴滴
校招火热招聘中
官网直投
🎉恭喜牛友成功参与 【面试复盘-技术专场】活动! ------------------- 分享你的面试经验,一起攒人品上岸吧!参与即有奖~ 👉快来参加:https://www.nowcoder.com/discuss/856002
点赞
送花
回复
分享
发布于 2022-03-09 19:07
同学 是你简历里写了会C吗  这咋问这老些C的东西
点赞
送花
回复
分享
发布于 2022-03-11 10:02

相关推荐

点赞 评论 收藏
转发
11 26 评论
分享
牛客网
牛客企业服务