[面经]星环科技大数据后台开发实习面试

星环科技大数据后台开发实习岗位(Java相关)

1.自我介绍

2.问有没有用Java8做过项目

3.有没有自己学过大数据或者人工智能

 

语言基础

1.Java基础类型哪几种

2.拆装箱什么时候发生

问:

int a = 1;

Integer b = 1;

a == b 

return true

包装类在与基本类型在进行数值比较时:包装类会自动拆箱成对应的基本类型数据

如上代码在进行比较时,Integer类型会拆箱成int类型


int a = 1;

Integer b = new Integer(1);

a == b 

return true

3.关于堆栈的存储

int a = 1 存在堆里还是栈里?

根据申明的地方:

  • 如果是作为局部变量local variable,是存在stack里
  • 如果是作为成员变量field,存在heap里

追问:

如果是有一个static的成员变量,他存在哪里?

方法区,当时回答的heap(真的是晕)

补充一点:

  • 堆区(heap) 用于存放所有对象,是线程共享的 (数组也属于对象)
  • 栈区(stack) 用于存放基本数据类型的数据和对象的引用,是线程私有的(分为虚拟机栈和本地方法栈)
  • 方法区(method) 用于存放类的信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap,还叫静态存储区)
  • 作者:Draper
    链接:https://www.jianshu.com/p/6fd101e56071
    来源:简书

4.了解final关键字

  • final变量,不能被reassigned
  • final方法,不能被overridden
  • final类,不能被inherited

追问:final Map<> m = new HashMap<>(); final修饰一个成员变量

  • 能不能把另外一个map赋值给m?map = new HashMap<>(); 不能
  • 能不能对m进行put操作?可以m作为reference存在stack中,final表示reference不能修改,但是m指向的内存中的值是可以修改的

 

举一个:

[面经]星环科技大数据后台开发实习面试_第1张图片

一个男孩(class),他的女票(field)国家分配的,不可变的final

第一次,我们这个男孩交了一个女票名叫taylor,这时候男孩想换一个叫gaga的新女票,国家肯定不允许(会报错)

第二次,他学乖了,不换女票了,他直接拿户口本到派出所,给女票改了一个名字叫“gaga”,这下国家也没话可说(运行通过),于是他可以愉快的跟这个叫gaga的女票继续生活下去

面向对象:

5.说一说自己对面向对象和面向过程的理解

面向过程,自己造电脑。面向对象,自己组装电脑。

面向过程,先具体逻辑细节,后抽象问题整体;面向对象,先抽象问题整体,后具体逻辑细节

函数,对象(变量+方法)

面向对象可以

6.接口和抽象类的区别

7.Java8中的default实现

多线程:

8.多线程的几个状态

9.synchronised的底层实现,没答上来

10了解volatile吗?能解决什么问题?具体场景

网络编程:

11.Java网络编程写过吗?比如socket编程

12用哪些通信方式使客户端之间可以通信?

13写web用到什么什么框架?Spring or springboot?Spring的注解service、component、bean?看过Spring的源码吗?

jdk源码

14jdk的源码看过吗?arraylist继承了什么类或者实现类什么接口?

用arraylist 移除掉(remove)某个下标的数据,怎么实现的,时间复杂度多少

用linkedlist呢?

数据库

15mysql存储引擎的存储的数据结构不同,有了解吗?

16b tree和b+tree的区别

17用什么方式判断,检查sql走没走索引?执行替换相关

18分页查询写过吗?

 

关于网络编程,多线程和数据库的很多地方没答上来,后面还需要好好学习

 

 

 

 

 

 

 

你可能感兴趣的:(java,javase,面试)