计算机专业应届生找工作之面试题实战(JAVA)

第一次面试(笔试)-----(上海*****信息)

基础部分:

1. 作用域:public、private、protected?

  • public:public 作用域表示该变量或函数可以被任何其他类或对象访问
  •  private: 作用域表示该变量或函数只能在其所在的类内部访问
  • protected:protected 作用域表示该变量或函数可以被其所在类及其子类访问

2. short s1 = 1; s1 = s1 + 1;有错吗?   short s1 = 1; s1 += 1;有错吗?若有错,描述错误

第一句代码中的错误与类型转换规则有关。

s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

short s1 = 1; s1 += 1 正确,执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

3. string是最基本的数据类型吗? 可以被继承吗?为了提高效率可以用什么类替代?

  • String不是最基本的数据类型(是引用类型)
  • 不可被继承(被final关键字修饰)
  • 为了提高效率,可以使用StringBuilder或StringBuffer类来替代String

4. 一个Java源文件是否可以包括多个类?

一个java文件可以包括多个类,但最多只能有一个public类,并且这个public类的类名与文件名要相同。

5. x==y 和x.equals(y)区别?

对于基本数据类型,== 比较的是两个变量的值是否相等;基本数据类型不支持equals

对于引用类型,== 比较的是对象存储地址,equals比较的是内容

6. jsp四种会话作用域?(冷门)

  • Page:数据仅在当前页面内有效
  • Request:数据在同一个请求范围内有效,即从服务器接收到请求到响应返回给客户端的整个过程
  • Session:数据在用户与服务器的一次会话中有效
  • application:数据在整个Web应用程序中有效,即从应用启动到应用停止运行期间

7. 说说你对MVC的理解?

组成部分:Model(模型):代表应用程序的数据结构和业务逻辑、View(视图):用户界面的表示,负责展示模型并于用户交互、Controller(控制器):是模型和视图中间的中介,负责处理用户输入并更新模型和视图状态。

8. 说说SS2中三个框架各自的作用?(一脸懵,比较老的框架)

  • Spring 管理整个应用程序的组件、依赖和配置,提供了广泛的功能,如依赖注入、AOP、事务管理等,是整个应用的骨架。
  • Struts 专注于 Web 层,提供了基于MVC模式的结构,简化了用户界面的开发和管理,通过控制器和视图的分离提高了应用的可维护性。
  • Hibernate 处理数据访问层,通过对象关系映射(ORM)简化了数据持久化操作,允许开发人员使用面向对象的方式来操作数据库,提高了开发效率和代码质量。

代码题:

9.判断下列代码是否编译成功,不成功原因是什么?

final int i = 0;
public void doSomething(){
    System.out.println("i=" + i);
}

无法编译成功,final修饰的变量必须被初始化,否则会编译器会抛出错误。

10.输出下列代码的运行结果

static boolean foo(char c){
    System.out.print(c);
    return true;
}
public static void main(String[] argv){
    int i = 0;
    for (foo('A');foo('B')&&(i<2);foo('C')){
        i++;
        foo('D');
    }
}

ABDCBDCB

12. 补充代码,输出从大到小的值

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[] values = {3, 1, 6, 2, 9, 0, 7, 4, 5};
        sort(values);
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
        }
    }

    public static void sort(int[] values) {
      // 补充该方法中的代码
    }
}
 public static void sort(int[] values) {
    
    /**
    for (int i = 0; i < values.length / 2; i++) {
            int temp = values[i];
            values[i] = values[values.length - 1 - i];
            values[values.length - 1 - i] = temp;
        }
    */
   
      Integer[] a = Arrays.stream(values).boxed().map(Integer[]::new);
      Arrays.sort(a, Conllections.reverseOder());
      for(int i = 0; i < a.length; i++) {
      values[i] = a[i];
      }
    }

数据库:

有以下两张表(库表具体内容记不太清楚了😂😂😂)员工表、部门表

id

name

salary

depId

1

张三

1500

1001

2

李四

1400

1002

3

王五

1800

1003

4

赵六

1200

1004

id

depId

depname

1

1001

销售部

2

1002

aaa

3

1003

技术部

4

1004

营运部

1. 员工表和部门表 找出部门1002中薪水为1500的员工

// 1. 员工表和部门表 找出部门1002中薪水为1500的员工

SELECT *
FROM Employees e
JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE e.Salary = 1500 AND e.DepartmentID = 1002;



// 2. 找出部门1002中薪水最高的员工

SELECT *
FROM employee e
JOIN department d ON e.department_id = d.id
WHERE d.id = 1002
ORDER BY e.salary DESC
LIMIT 1;


SELECT e.EmployeeID, e.EmployeeName, e.Salary, e.DepartmentID FROM Employees e WHERE e.Salary = (     SELECT MAX(Salary)     FROM Employees     WHERE DepartmentID = 1002 ) AND e.DepartmentID = 1002;

// 3. 将部门1004的员工薪水➕100

UPDATE Employees
SET Salary = Salary + 100
WHERE DepartmentID = 1004;


// 4. 新增员工赵六到营运部,薪水为1800,年龄为24。

INSERT INTO Employees (EmployeeName, Salary, Age, DepartmentID)
VALUES ('赵六', 1800, 24, 1003);


// 5. 删除所有生产部人员信息。

DELETE FROM Employees
WHERE DepartmentID = 1004;



DELETE FROM 员工表
WHERE 部门_id IN (
    SELECT 部门_id
    FROM 部门表
    WHERE 部门名称 = '生产部'
);

注意⚠️:以上两sql语句全为物理删除,在我们实际的开发中,对于数据删除应该逻辑删除,避免物理删除(万一哪一天又需要恢复呢😂)

// 6. 使用HQL语句得到与题1(员工表和部门表 找出部门1002中薪水为1500的员工)相同的结果,假设映射实体对象名和表名一样,雇员表对部门表为一对一的关系。压轴大题一脸懵哈哈哈哈哈哈


String hql = "FROM Employee e WHERE e.salary = 1500 AND e.department.departmentID = 1002";
Query query = session.createQuery(hql);
List<Employee> employees = query.list();

// 补充:Hibernate Query Language (HQL) 是 Hibernate 提供的一种面向对象的查询语言,它类似于 SQL,但是面向对象,并且直接操作实体对象而不是数据库表。HQL 允许开发人员使用类和属性名称来编写查询,而不是直接使用数据库表和列名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值