杭州云尖信息 Java 实习一面

杭州云尖信息 Java 实习一面

1.项目是自学的还是学校的

2.简单介绍一下你的项目

3.项目中你熟悉的模块是什么,讲一下

4.项目的业务场景

5.常见的集合

6.arraysList和LinkedList的区别

7.你一般是怎么进行异常处理的

8.try-catch-finally的执行顺序

try 块: 先执行 try 块内的代码。如果这段代码没有抛出异常,那么 catch 和 finally 块的执行取决于是否存在异常。 如果 try 块内的代码抛出异常,执行会立即转移到相应的 catch 块(如果有匹配的 catch 块)。 catch 块: 当 try 块抛出一个异常并且 catch 块可以处理该异常时,catch 块的代码将被执行。 如果没有异常发生,或者抛出的异常不匹配任何 catch 块,catch 块将被跳过。 finally 块: 不管 try 是否抛出异常,或者 catch 是否执行,finally 块的代码总是会被执行。 它用于包含必须在任何情况下都需要执行的清理代码,如关闭文件流、释放资源等。 return 语句: 如果在 try 或 catch 块中有 return 语句,finally 块仍然会先执行,然后才会返回值。 如果 finally 块也有 return 语句,那么它会覆盖 try 或 catch 中的 return,并用其自身的返回值返回。

9.final的作用

1)修饰类:

表明该类不可被继承,类中的所有成员方法都隐式的被指定为final方法,成员变量则可以定义为final,也可以不定义为final;

2)修饰方法:

用final修饰方法的原因有两个:

锁定这个方法,防止任何继承类修改它的含义; 提高效率:在方法前面添加final进行修饰可以提高效率,其原理是基于内联/内嵌(inline)机制,它会使你在调用final方法时,直接将方法的主体插入到调用处,从而省去调用函数所花费的开销。但是如果方法过于庞大或者其中有循环的话,这种提高效率的方法可能会失效。

3)修饰变量:

终于还是到这里了。

在java中,final对变量的修饰的作用,是防止变量值的改变;

如果修饰的是基本类型数据变量,则该变量的值不能发生改变; 如果修饰的是引用类型数据变量,则该变量不会内二次初始化;

10.final可以修饰什么

11.重载和重写的区别。

1.重写(Override) 从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。 重写 总结: 1.发生在父类与子类之间 2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同 3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

2.重载(Overload)

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载

重载 总结: 1.重载Overload是一个类中多态性的一种表现 2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序) 3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

12.讲一下Spring Ioc 和 Aop

1)IOC

1、谁控制谁:在之前的编码过程中,都是需要什么对象自已去创建什么对象,有程序员自已来控制对象,而有了OC容器 之后,就会变成由工OC容器来控制对象, 2、控制什么:在实现过程中所需要的对象及需要依赖的对象,比如说一个类叫A,A里面有B、C、D三个对象,这时spring会帮我们完成bcd三个对象的注入过程,不需要我们进行任何人为设置 3、什么是反转:在没有工OC容器之前我们都是在对象中主动去创建依赖的对象,这是正转的,而有了IOC之后,依赖的对 象直接由工OC容器创建后注入到对象中,由主动创建变成了被动接受,这是反转 4、哪些方面被反转:依赖的对象

2)AOP

AOP全称叫做AspectOrientedProgramming面向切面编程。它是为解耦而生的,解耦是程序员编码开发 过程中一直追求的境界,AOP在业务类的隔离上,绝对是做到了解耦

任何一个系统都是由不同的组件组成的,每个组件负责一块特定的切能,当然会存在很多组件是跟业务无关 的,例如日志、事务、权限等核心服务组件,这些核心服务组件经常融入到具体的业务逻辑中,如果我们为每 一个具体业务逻辑操作都添加这样的代码,很明显代码穴余太多,因此我们需要将这些公共的代码逻辑抽象出 来变成一个切面,然后注入到自标对象(具体业务)中去,AOP正是基于这样的一个思路实现的,通过动态代 理的方式,将需要注入切面的对象进行代理,在进行调用的时候,将公共的逻辑直接添加进去,而不需要修改 原有业务的逻辑代码,只需要在原来的业务逻辑基础之上做一些增强功能即可

13.讲一下RESTFUL风格是什么

RESTful风格是一种软件架构风格,全称为Representational State Transfer(表现层状态转移)。它由Roy Fielding在2000年的博士论文中提出,作为一种设计原则和约束条件集,指导如何设计可扩展、简洁、具有良好性能特性的Web服务。RESTful风格的核心思想是将网络上的每个资源都赋予一个唯一的URL,并通过HTTP协议的标准化方法(GET, POST, PUT, DELETE等)来操作这些资源,从而实现“资源”的操作和表现形式分离。下面是RESTful风格的几个关键特点:

  • 资源导向: 每个网络资源(如文章、用户、订单)都应有一个唯一的标识符(通常是URL),资源的操作不应该依赖于具体的动作名称,而是通过HTTP方法和资源路径来表达意图。
  • 无状态: 服务器端不存储客户端的上下文信息,每次请求都包含处理该请求所需的所有信息。这样可以简化服务器的设计,使其更容易伸缩。
  • 可缓存: 使用HTTP协议的缓存机制,可以提高响应速度,减少服务器负载。GET请求应当是幂等的,意味着多次请求具有相同的效果,因此可以安全地被缓存。
  • 统一接口: 使用标准的HTTP方法(GET, POST, PUT, DELETE等)来实现资源的查询、创建、更新和删除,使得客户端和服务器之间的交互更加通用和简单。
  • 分层系统: 系统架构可以划分为不同的层次,每个层次只关注自己的责任,这样可以降低各部分间的耦合,便于独立扩展和维护。
  • 按需代码(Code-On-Demand,可选): 服务器可以发送一些代码(如JavaScript),在客户端执行,以实现更丰富的功能,但这不是必须的。

遵循RESTful风格设计的API,通常更易于理解和使用,能够更好地支持不同类型的客户端,同时利于服务的扩展和维护。在实际应用中,Spring MVC等框架提供了对RESTful风格的支持,方便开发者快速构建RESTful API。

14.SQL情景题,两张表,一张student表id和name字段,一张score表id和score字段,查询成绩最好的那个学生的姓名

SELECT s.name FROM student s,score c WHERE s.id = c.id AND c.sc = (SELECT MAX(sc) FROM score);

15.sql的union和union all知道吗

16.项目中哪些地方使用了redis呢

#软件开发笔面经#
全部评论

相关推荐

4 2 评论
分享
牛客网
牛客企业服务