> 文章列表 > 安恒信息java实习面经

安恒信息java实习面经

安恒信息java实习面经

目录

    • 1.Java ME、EE、SE的区别,Java EE相对于SE多了哪些东西?
    • 2.jdk与jre的区别
    • 3.说一下java的一些命令,怎么运行一个jar包
    • 4.简单说一下java数据类型及使用场景
    • 5.Map跟Collection有几种实现?
    • 6.面向对象的特性
    • 7.重载和重写的区别
    • 8.重写的好处,怎么重写父类的方法
    • 9.java中遍历list的几种方式
    • 10.stream流用过吗?它能够实现什么?
    • 11.讲讲对lambda表达式的理解
    • 12.我们在创建一个实体类的时候,必要的有哪些方法?
    • 13.这些方法你都是手写的,还是用什么工具生成的,还是说用注解?
    • 14.lombok注解用过吗?
    • 15.maven的常用命令
    • 16.maven的pom文件有哪些标签及标签的作用
    • 17.git命令,它的提交过程
    • 19.Linux常用命令

1.Java ME、EE、SE的区别,Java EE相对于SE多了哪些东西?

JavaEE通常是指Java Enterprise Edition,Java企业版
JavaSE通常是指Java Standard Edition,Java标准版
Java ME通常是指Java Micro Edition,Java微型版本

JavaEE 比 SE多了许多包,用于开发大规模的,分布式的Java应用/服务器。
比如JSP,Servlet相关的包都是在JavaEE范畴,SE里面没有的。

2.jdk与jre的区别

JRE顾名思义是java运行时环境
JDK顾名思义是java开发工具包
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

3.说一下java的一些命令,怎么运行一个jar包

java -jar demo.jar
java -Xms515m -Xmx1024m -jar demo.jar
命名应该非简称,助记的话:memory startup初始内存,memory maximum最大内存

4.简单说一下java数据类型及使用场景

类型名称 字节空间 使用场景
byte 1个字节 存储字节数据
short 2个字节 兼容性考虑
int 4个字节 存储普通整数
long 8个字节 存储长整数
float 4个字节 存储浮点数
double 8个字节 存储双精度浮点数
char 2个字节 存储一个字节
boolean 1个字节 存储逻辑变量

5.Map跟Collection有几种实现?

安恒信息java实习面经

6.面向对象的特性

(1)继承:继承是从已有类得到继承信息创建新类的过程
(2)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
(3)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。

你是怎样理解多态的?什么地方用过?
同一个行为具有多个不同表现形式或形态的能力。
父类引用指向子类对象,例如 List< String > list = new ArrayList< String >();就是典型的一种多态的体现形式。

7.重载和重写的区别

1、重载发生在本类,重写发生在父类与子类之间;
2、重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;
3、重载的参数列表不同,重写的参数列表必须相同。
4、重写的访问权限不能比父类中被重写的方法的访问权限更低。
5、构造方法不能被重写

8.重写的好处,怎么重写父类的方法

在子类中可以根据需要对从基类中继承来的方法进行重写,重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西

9.java中遍历list的几种方式

4种

for
forEach
iterator
stream
        ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);//forfor (int i = 0; i < list.size(); i++) {System.out.print(list.get(i)+" ");}//加强forfor (Integer i : list) {System.out.print(i+" ");}//iteratorIterator<Integer> iterator = list.iterator();while (iterator.hasNext()){Integer i = iterator.next();System.out.print(i+" ");}//streamlist.stream().forEach(System.out::println);

10.stream流用过吗?它能够实现什么?

是什么
对数据源的计算
特点
1.Stream 自己不会存储元素
2.Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
3.Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
Stream只在遇到终结操作的时候才会执行,比如:

        List.of(1, 2, 3).stream().filter(i -> i > 2).peek(System.out::println);

这么一段代码是不会执行的,peek方法可以看作是forEach,这里我用它来打印Stream中的元素。
因为filter方法和peek方法都是转换流方法,所以不会触发执行。
如果我们在后面加入一个count方法就能正常执行:

        List.of(1, 2, 3).stream().filter(i -> i > 2).peek(System.out::println).count();

count方法是一个终结操作,用于计算出Stream中有多少个元素,它的返回值是一个long型。
Stream的这种没有终结操作就不会执行的特性被称为延迟执行。

11.讲讲对lambda表达式的理解

(1)lambda能替换匿名内部类

        Runnable r = new Runnable() {@Overridepublic void run() {System.out.println("thread run");}}Runnable r = () -> {System.out.println("thread run");};

(2)哪里有list,哪里就有lambda

        //遍历输出集合List<Integer> list=Arrays.asList(1,2,3,4,5);list.forEach(x->System.out.print(x));//当然也可使用方法引用list.forEach(System.out::print);//取出所有大于1的元素,并形成新的集合List<Integer> collect = list.stream().filter(x -> x > 1).collect(Collectors.toList());//获取学生的所有年龄集合List<Integer> ageList=Arrays.asList(new Student("tom",20),new Student("jack",22)).stream().map(Student::getAge).collect(Collectors.toList());

安恒信息java实习面经

12.我们在创建一个实体类的时候,必要的有哪些方法?

Getter,Setter,toString,equals,hasCode

13.这些方法你都是手写的,还是用什么工具生成的,还是说用注解?

快捷键alt+ins或者lombok的@data

14.lombok注解用过吗?

  • @Data
    使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
  • @AllArgsConstructor
    使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
  • @NoArgsConstructor
    使用后创建一个无参构造函数
  • @Builder注解使用的创建者模式又叫建造者模式。简单来说,按照自定义属性去创建对象,比如一个类可能有很多属性 但是我创建对象想按照自己的属性去设置 就要创建很多构造方法 用了这个注解就不用了
@ToString
@Builder
public class User {private Integer id;private String name;private String address;
}class Test{public static void main(String[] args) {User user = User.builder().address("beijing").build();System.out.println(user);}
}

15.maven的常用命令

mvn -v, --version 显示版本信息
打包:mvn package
在本地 Repository 中安装 jar:mvn install
清除产生的项目:mvn clean

16.maven的pom文件有哪些标签及标签的作用

project - project 是 pom.xml 中描述符的根。
modelVersion - modelVersion 指定 pom.xml 符合哪个版本的描述符。maven 2 和 3 只能为 4.0.0。
groupId - 团体、组织的标识符。
artifactId - 单独项目的唯一标识符。
version - 一个项目的特定版本。
dependencyManagement 是表示依赖 jar 包的声明。即你在项目中的 dependencyManagement 下声明了依赖,maven 不会加载该依赖,dependencyManagement 声明可以被子 POM 继承。主要是为了统一管理依赖包的版本,确保所有子项目使用的版本一致
modules - 子模块列表。
properties- 属性列表。定义的属性可以在 pom.xml 文件中任意处使用。使用方式为 ${propertie} 。

17.git命令,它的提交过程

git add . 将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录
git commit -m ‘注释’ 将缓存区内容添加到本地仓库
git push origin master 将本地版本库推送到远程服务器

19.Linux常用命令

ls:查看 linux 文件夹包含的文件,而且可以查看文件权限
pwd:命令用于查看当前工作目录路径。
cd:切换当前目录至 dirName。
rm:删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
mv:移动文件或者改名
cp:将源文件复制至目标文件
cat:查看文件的内容
tail:命令用于显示指定文件末尾内容
free:查看内存
查找指定进程

ps -ef | grep svn