2021.3.19两场面试总结

第一场:10:30 java实习生

①简单的自己介绍
②根据所做项目提问语言、框架、前端、后端等相关问题
③根据实践经历提问职业规划等问题
④根据岗位要求提问相关问题

java问题回忆:

  1. JVM是什么?
  2. java的基本数据类型有哪些?
  3. String的方法有哪些?举例两三个即可。
  4. web前端框架和后端框架分别有哪些?
  5. 微服务器的运用原理
  6. springboot springcloud 的区别?
  7. 什么是dom文档?
  8. 什么是敏捷开发?

解答
①java虚拟机,可以理解成一个以字节码为机器指令的CPU。(是将虚拟机可以读懂的代码称之为字节码。也就是java中的class文件。)它负责读取并处理经过编译的、与平台无关的“.class”文件(字节码文件),java解释器在负责将java虚拟机的代码在特定的平台上运行。

Java源码=>编译器=>JVM可执行的Java字节码(虚拟指令或class文件)=>JVM=>JVM解释器=>机器可执行的二进制文件=>程序运行。

参考:https://blog.csdn.net/a4171175/article/details/90735888

② 区别:
java语言中的数据类型分为两大类,分别是基本数据类型和引用数据类型。基本数据类型由java语言定义,数据占用内存的大小固定,在内存中存入的是数值本身。而引用数据类型在内存中存入的是引用数据类型的存放地址,而不是本身。
分类:
基本数据类型:(整数型)byte short int long (浮点数型)float double (字符型) char (逻辑型)boolean
引用数据类型:数组、类、接口、对象

③String类: 常用的实用类
字符串操作:
1、比较字符串
equals() 比较两个字符串是否相等,由于字符串是对象类型,所以不能简单地用“==” 判断两个字符时候相等。(euqals比较内容,而双等号比较的是两个对象的内存地址,及时内容相同,不同对象的内存地址也不相同,因此比较两个字符串是否相等时,不能用双等号)
2、获取字符串的长度
length()字符型是一个对象,在这个对象中包含length属性。使用String中的length()的方法可以获取该属性。
3、字符串的大小写转换
toUpperCase()String类中提供了两个用来转换字母大小写的方法,toLowerCase()用来将字符串中的大写字母改写为小写字母。
4、查找字符串
indexOf(int ch):用于获取指定字符在元字符中第一次出现的索引。
indexOf(String str):用于获取指定字符串在原字符中第一次出现的索引。
5、去掉字符串的首尾空格:
trim()
6、分割字符串
split(String regex,int limit)第一个入口参数regex为分割规则,第二个入口参数limt用来设置分割规则的应用此数。


Java Web前端开发框架:

  • bootstrap:基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷
  • jQuery 是一个 JavaScript函数库,极大地简化了 JavaScript 编程。jQuery 是目前最流行的 JS 框架,而且提供了大量的扩展。
  • AngularJS 是一个 JavaScript 框架。是完全可扩展的。
    Java Web后端开发框架:
    三大框架是
    SpringMVC Spring Mybatis(SSM)。
    Strtus2 Spring Hibernate ssh (SSH)
    Spring Boot 出来之后,就直接上 Spring Boot 就好。


在一个微服务的系统中,可以有 Java 编写的服务,也可以有 Python编写的服务,他们是靠Restful架构风格统一成一个系统的。所以微服务本身与具体技术实现无关,扩展性强。

微服务的目的:有效的拆分应用,实现敏捷开发和部署 。

微服务拆分依据:拆分的大原则是当一块业务不依赖或极少依赖其它服务,有独立的业务语义,为超过2个的其他服务或客户端提供数据,那么它就应该被拆分成一个独立的服务模块。

目前微服务的开发框架,最常用的有以下四个:

  1. Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
  2. Dubbo:http://dubbo.io
  3. Dropwizard:http://www.dropwizard.io(关注单个微服务的开发)
  4. Consul、etcd&etc.(微服务的模块)


Spring Boot:

旨在简化创建产品级的Spring应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。

Spring Cloud:

微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。

⑦DOM 是 Document Object Model(文档对象模型)的缩写。所以,浏览器在解析HTML文档时,把每个标签抽象成代码里的对象,按照这种层次分明的结构组织,这就是DOM。
如下图所示为数据结构里典型的"树” 结构。程序员经常说的DOM树,实就是这个意思。浏览器在解析HTML时,会在它的内部构建这样一棵DOM树,然后按照这棵树.上的层次顺序解析每个标签。解析完成后,户就看到了网页的内容。
在这里插入图片描述

  • HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。
  • 通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。
  • 编程接口:可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。所有HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。
  • 访问 HTML 元素(节点),访问 HTML 元素等同于访问节点,您能够以不同的方式来访问 HTML 元素:
    通过使用 getElementById() 方法
    通过使用 getElementsByTagName() 方法
    通过使用 getElementsByClassName() 方法
    参考链接: dom的介绍.

在这里插入图片描述
⑧敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建
被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是
把-一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件- -直
处于可使用状态。

第二场 14:00 java实习生

①经理看简历,提问简历上的相关问题
②后端工程师与前端工程师提问
③几乎不看所做项目,直接提问后端前端相关问题

java问题回忆:
后端相关:

  1. 内部类是什么?
  2. 构造方法和对象是什么?
  3. 成员变量和局部变量和类(静态、static)变量?
  4. final是什么?
  5. 重载和重写(覆盖)的区别?
  6. 抽象和接口的区别?
  7. java中常用的集合有哪些?

前端相关:

  1. vue的生命周期?
  2. rem、em、pt、px之间的关系
    10.用npm下过什么插件?

解答
①java语言允许在类中定义内部类,内部类就是在其他类内部定义的子类。
有四种形式:成员内部类、局部内部类、静态内部类、匿名内部类、
1、只有创建了成员内部类的实例,才能使用成员内部类否认变量和方法。
成员内部类和成员变量一样,属于类的全局变量。
2、局部内部类和局部变量一样,都是在方法内定义的,其有效范围只在方法内部有效。
3、静态内部类和静态变量一样,都用static关键字修饰。
4、匿名内部类就是没有名称的内部类,他经常应用于Swing程序设计的事件监听处理。

② 构造方法是一种特殊的方法,他的名字必须与他所在类的名字完全相同,并且没有返回值,
也不需要使用关键字void进行标识。构造方法也没有类型。
构造方法用于对对象的所有变量进行初始化,在创建对象时立即被调用。
如果类例定义了一个或多个构造方法,那么java中不提供默认的构造方法。


在类体中变量定部分所声明的变量为类的成员变量
而在方法体中声明的变量和方法的参数则为局部变量
成员变量又可以细分为实例变量和类变量。
在声明成员变量时,用关键字static修饰的称为类变量
(也可以称为static变量或静态变量),否则称为实例变量。
类变量与实例变量的区别:在运行时,java虚拟机只为类变量分配一次内存,
在加载类的过程中完成类变量的内存分配,可以直接通过类名访问类变量。
而实例变量则不同,每创建一个实例,就会为该实例的变量分配一次内存。


final关键字用来修饰类、变量和方法,用于表示它修饰的类、方法和变量不可改变。


1、多态是面向对象程序设计的重要部分,是面向对象的3个基本特征之一。
在java语言中,通常使用方法的重载(Overloading)和覆盖(Overriding)实现类的多态性。
2、方法的重载Overload是指在一个类中,出现多个方法名相同,
但是参数个数或参数类型不同的方法。
3、当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,
那么子类就不能继承父类的方法,此时,称子类的方法**覆盖Override(重写)**了父类的方法。
覆盖体现了子类补充 或者改变父类方法的能力,通过覆盖,
可以使一个方法在不同的子类中表现出不同的行为。
注:(子类不能覆盖父类中声明为final或static的方法,子类必须覆盖父类中声明为abstract的方法,
或者子类中也将该方法声明为abstract。
子类覆盖父类中的同名方法时,子类中方法的声明也必须和父类中被覆盖的方法声明一样)


1、抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类 必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。
抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

2、接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。
接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。


1、List集合:List集合为列表类型,列表的主要特征是以线性方式存储对象。
2、Set集合:Set集合为集类型。集是最简单的一种集合,存放于集中的对象不按特定方式排序,只是简单的吧对象加入集合中,类似于向口袋里放东西。对于集中存放的对象的访问是通过对象的引用的,所以,在集中不能存在重复对象。
3、Map集合:Map集合为映射类型,映射与集和列表有明显的区别,映射中的每个对象都是成对存在的。映射中存储的每个对象都有一个相应的键(key)值,在检索对象时必须通过相应的键对象来获取值(value)对象,类似于在字典中查找单词一样,所以,要求键对象必须是唯一的,


Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。在这里插入图片描述

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。
px是固定长度单位,不随其它元素的变化而变化

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
em是相对于父级元素的单位,会随父级元素的属性(font-size或其它属性)变化而变化

rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。
rem是相对于根目录(HTML元素)的,所有它会随HTML元素的属性(font-size)变化而变化


参考链接: link.
核心组件
路由:vue-route:route你可以理解它就是url的“媒体查询”。通过在url输入不同的路径,可以响应不同的vue页面。
UI库(Element UI):依然使用npm进行安装。element支持的组件非常多,你可以查看这里,里面的组件代码已经写的非常清楚了,直接复制粘贴到你的.vue中即可。

猜你喜欢

转载自blog.csdn.net/weixin_44225042/article/details/115025133