当前位置: 首页 > news >正文

【后端开发面试题】

一、选择题
1、在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成一个各属性与赋值对象相同的新对象。

错误
如果要生成一个各属于与赋值对象相同的新对象,需要使用引用赋值。

P1 = new Person('小明', 18);
P2 = P1;

2、如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的;

正确

# 多态性,父类引用指向子类对象
class Parent {}
class Child extends Parent {}
Parent p = new Child();# 但这样就不对了
class Parent {Child c;
}
Child c2 = Child(p)

3、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。 (X)

抽象类可以没有抽象方法,但抽象方法的类必须是抽象类

4、Final类不能派生子类,Final类的成员方法不能被覆盖。(√)

因为final类是终极类,

5、一个Java文件可以有多个class定义。 (√)

二、编程题
1、Java有哪些数据类型?各占用多少字节?

整型
byte1字节,short2字节,int4字节,long8字节;
浮点型
float4字节,double8字节
字符型
char2字节
布尔型
boolean在JVM中通常占用1字节

2、谈谈Java中int 和 Integer的区别与使用场景

1)int是基本数据类型;Integer是int的封装类
2)类初始化时,int的初始值是0,Integer的初始值是null
使用场景:
1)加减乘除运算或参数传递时,用int
2)像对象一样处理,用Integer

3、谈谈你对MVC的理解

MVC(Model-View-Controller)是一种经典的软件设计模式,广泛应用于各类软件开发中,尤其在Web开发、桌面应用和移动应用等领域。以下是对MVC模式的详细理解:
核心组件与职责
Model(模型)
负责管理应用程序的数据和业务逻辑,直接与数据库或数据源交互。包括数据的存储、检索、验证,以及定义业务规则(如数据计算、状态转换等)。模型通常不依赖于具体的用户界面,专注于数据的处理和业务逻辑的实现。例如,用户信息类、订单处理模块等都属于模型层。
View(视图)
负责呈现数据给用户,是用户界面的展示层。视图接收模型的数据并进行渲染,支持动态内容生成(如通过模板引擎),但不处理业务逻辑。用户与视图的交互(如点击按钮、输入文本)会被传递给控制器。例如,网页的HTML页面、移动应用的UI布局等都是视图层的体现。
Controller(控制器)
作为模型和视图之间的中介,负责处理用户输入,协调模型和视图的交互。控制器接收用户请求(如HTTP请求、按钮点击事件),调用模型的方法处理数据,然后根据处理结果选择并更新视图。控制器可能包含简单的输入验证或路由逻辑,但不直接处理业务逻辑或数据存储。
组件交互流程
用户操作:用户通过视图触发交互事件,如点击按钮、提交表单等。
控制器处理:控制器接收用户输入,解析请求并调用模型的方法来处理数据。
模型更新:模型根据控制器的指令更新数据,并通过观察者模式或其他机制通知视图数据已发生变化。
视图更新:视图接收到模型的通知后,重新渲染界面,展示最新的数据。
优势
关注点分离:将数据、界面和控制逻辑分离,使代码模块化,便于团队协作。前端开发者可以专注于视图设计,后端开发者可以专注于模型和业务逻辑。
可维护性:修改视图或模型不会影响其他组件,降低了代码的耦合度,提高了系统的可维护性。
可扩展性:新增功能或替换组件(如更换数据库、修改用户界面)更加灵活,无需修改大量代码。
可测试性:模型、视图和控制器可以独立进行单元测试,提高了代码的质量和可靠性。
局限性
职责不明确:如果设计不当,控制器可能会承担过多的业务逻辑,导致职责不清晰,增加维护成本。
性能开销:组件之间的频繁通信可能会带来一定的性能开销,需要合理设计以优化性能。
学习成本:需要开发者理解各组件的职责和交互方式,避免职责混淆。
实际应用
MVC模式在许多主流框架中都有广泛应用,如Spring MVC(Java)、Django(Python)、ASP.NET MVC(C#)等。在Web开发中,MVC实现了前后端分离,提高了开发效率和系统的可维护性。在桌面应用和移动应用开发中,MVC模式同样可以有效组织代码,提高应用的稳定性和可扩展性。
总之,MVC模式通过分离数据、界面和控制逻辑,为复杂应用提供了清晰的架构,是构建可维护、可扩展软件系统的重要设计模式。

4、CSS有哪几种选择符(Selectors)以及CSS优先级规则?

1)ID选择器
2)类选择器
3)属性选择器
4)伪类选择器
5)标签选择器(类型选择器)
6)伪元素选择器
7)通配选择符、关系选择符、否定伪类
优先级
1)!Important
2)内联样式
3)ID选择器
4)类、属性、伪类选择器
5)类型、伪元素选择器
6)通配、

5、说说如何使用Spring框架以及优缺点

Spring 的核心是控制反转(IOC)和面向切面编程(AOP)。
优点:
解耦与灵活性:
AOP支持:
声明式事务:
集成性强:
测试友好:
降低API使用难度:
缺点:
配置繁琐:
学习曲线:
性能开销:
依赖管理复杂:

6、已知数据表模型如下,其中学历用编码方式存储,定义为(01:研究生,02:本科,03:专科,04:高中)
a. 编写一个查询,找出2000年以后毕业的人员;

select a.*
from 人员表a,学历表b
where a.人员编号=b.人员编号 and 毕业时间 > 2000

b.编写一个SQL,更新人员表中所有人的最高学历(最高学历来自于学历表);

update 人员表a
set a.最高学历 = (select max(学历) from 学历表b where a.人员编号=b.人员编号)

c.如果人员表要做多库合并,做为主键的人员编号该如何设计?

使用NewID()函数生成具有唯一性的标识符

三、编程题
1、编写一个JavaScript函数,利用dom知识,创建一个div节点,div中有文字发“Hello World”,且div边框颜色为黑色,文字“hello world”字体颜色为红色。

<script type="text/javascript">const oDiv = document.createElement('div');oDiv.innerHTML = "Hrllo world!";oDiv.style.color = 'red';oDiv.style.border = "#aaaaaa 1px solid";document.body.appendChild(oDiv);</script>

2、Java编程,用数组实现栈。


public class ArrayStack {private int[] stack; // 存储栈元素的数组private int top; // 栈顶指针,指向栈顶元素在数组中的位置private int capacity; // 栈的最大容量// 构造函数,创建一个指定容量的栈public ArrayStack(int capacity) {this.capacity = capacity;this.stack = new int[capacity];this.top = -1; // 栈为空时,栈顶指针为-1}// 将给定的元素推送到栈的顶部public void push(int item) {if (isFull()) { // 如果栈已满,抛出异常throw new RuntimeException("Stack is full");}stack[++top] = item; // 将元素放入栈顶,同时栈顶指针+1}// 从栈的顶部删除元素并返回该元素public int pop() {if (isEmpty()) { // 如果栈为空,抛出异常throw new RuntimeException("Stack is empty");}return stack[top--]; // 返回栈顶元素,同时栈顶指针-1}// 返回栈顶元素但不删除它public int peek() {if (isEmpty()) { // 如果栈为空,抛出异常throw new RuntimeException("Stack is empty");}return stack[top]; // 返回栈顶元素,但不修改栈顶指针}// 如果栈为空,则返回true,否则返回falsepublic boolean isEmpty() {return top == -1; // 栈顶指针为-1表示栈为空}// 如果栈已满,则返回true,否则返回falsepublic boolean isFull() {return top == capacity - 1; // 栈顶指针+1等于栈容量表示栈已满}// 返回栈中元素的数量public int size() {return top + 1; // 栈顶指针+1即为栈中元素的数量}// 清空栈中的所有元素public void clear() {top = -1; // 将栈顶指针重置为-1,表示栈为空}
}//  定义栈接口public class Hello {public static void main(String[] args) {ArrayStack stack = new ArrayStack(5); // 创建容量为5的栈stack.push(1);stack.push(2);stack.push(3);System.out.println("栈顶元素为:" + stack.peek()); // 输出3stack.pop();System.out.println("栈顶元素为:" + stack.peek()); // 输出2System.out.println("栈是否为空:" + stack.isEmpty()); // 输出falseSystem.out.println("栈是否已满:" + stack.isFull()); // 输出falseSystem.out.println("栈中元素个数为:" + stack.size()); // 输出2}
}

四、数据库题
1、四、数据库题

1.表内容如下
在这里插入图片描述

要生成下列结果,该如何写SQL语句?(自定义表,将对应的数据导入到自定义表中,然后查询出对应的数据)
在这里插入图片描述
该题主要是考临时表的使用,数据的导入及查询语句与group by的使用。
2. 表Template中有A、B、C三列,用SQL语句实现,当列A大于列B时选择A列否则选择B列,当列B大于列C时选择B列否则选择C列。 这道题主要是考 case when的使用。

select
Case when t.A > t.B then t.A
else t.B
end
case when t.B > t.C then t.B
else t.C
end
from Template t

3、将表temp1中t1字段的值更新为temp2中t2的值,他们的关联字段为id; 这道题主要是考update的使用。

update temp1.t1, temp2.t2 set temp1.t1=temp2.t2 where temp1.id=temp2.id

4、将人员表中A01中参加工作时间A0141小于等于“1987-10-30”的数据删除;这道题主要是考delete语句的使用。

delete from A01 where A0141 <="1987-10-30";

5、字符串“abcd123”,分别取出该字符串前四个字符,右边三个字符。这道题主要考取部分字符串的函数使用。

select left("abcd123", 4) as a;
select right("abcd123", 3)as b;
http://www.dtcms.com/a/524071.html

相关文章:

  • 【coze】基础概念与使用
  • Java 语法糖详解(含底层原理)
  • 企业网站介绍越南做企业网站
  • 免费建设电影网站宁波优化推广找哪家
  • JAVA1024 类 object类 包装类 享元模式 ;类继承 :interface ;构造方法
  • 树与二叉树的奥秘全解析
  • 《Python 正则表达式完全指南:从入门到精通》(AI版)
  • 【linux】vim快速清空整个文件
  • 基于单片机的故障检测自动保护智能防夹自动门设计及LCD状态显示系统
  • 2025妈妈杯大数据竞赛B题mathorcup:物流理赔风险识别及服务升级数学建模数模教学大学生辅导思路代码助攻
  • 对监控理解
  • 体育数据传输:HTTP API与WebSocket的核心差异
  • 货代如何做亚马逊和速卖通网站dedecms三合一网站源码
  • 燃烧学课程网站建设业之峰装饰官网
  • 做料理网站关键词怎么设置上海专业的网站建设
  • 英文 PDF 文档翻译成中文的优质应用
  • css实现拼图,响应不同屏幕宽度
  • html css js网页制作成品——HTML+CSS度年华电视剧网页设计(5页)附源码
  • 告别内网限制!用StirlingPDF+cpolar打造可远程访问的PDF工具站
  • cms代码做网站高端网站设计教程
  • Tailwind CSS实战:构建仿ChatGPT聊天页面(失败了)
  • DeerFlow多智能体项目分析-依赖LangGraph实现条件路由和中断机制的源码解析
  • 【JUnit实战3_10】第六章:关于测试的质量(上)
  • 容器编排大王Kubernetes——helm包管理工具(8)
  • 南皮县网站建设php网站开发接口开发
  • 【AOA定位与UKF例程】到达角度(AOA)定位后,使用无迹卡尔曼滤波(UKF)对轨迹滤波,MATLAB例程可下载
  • 拒绝笨重,一款轻量、极致简洁的开源CI/CD工具 - Arbess
  • JavaWeb--Servlet
  • 【机器学习】15.深度聚类(Deep Clustering)原理讲解与实战
  • Atom编辑器下载安装图文教程(附安装包)