2024年Java最全JavaWeb 图书管理系统,高级Java开发面试题

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)

在这里插入图片描述

最新整理电子书

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

}

@ApiOperation(“编辑图书”)

@PostMapping(“/update”)

public R modifyBook(@RequestBody Book book) {

return R.success(CodeEnum.SUCCESS,bookService.updateBook(book));

}

@ApiOperation(“图书详情”)

@GetMapping(“/detail”)

public R bookDetail(Integer id) {

return R.success(CodeEnum.SUCCESS,bookService.findBookById(id));

}

@ApiOperation(“图书详情 根据ISBN获取”)

@GetMapping(“/detailByIsbn”)

public R bookDetailByIsbn(String isbn) {

return R.success(CodeEnum.SUCCESS,bookService.findBookByIsbn(isbn));

}

@ApiOperation(“删除图书”)

@GetMapping(“/delete”)

public R delBook(Integer id) {

bookService.deleteBook(id);

return R.success(CodeEnum.SUCCESS);

}

}

借阅管理

package com.book.manager.controller;

import cn.hutool.core.date.DateUtil;

import com.book.manager.entity.Borrow;

import com.book.manager.service.BookService;

import com.book.manager.service.BorrowService;

import com.book.manager.util.R;

import com.book.manager.util.consts.Constants;

import com.book.manager.util.http.CodeEnum;

import com.book.manager.util.ro.RetBookIn;

import com.book.manager.util.vo.BackOut;

import com.book.manager.util.vo.BookOut;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import org.springframework.beans.BeanUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

/**

  • @Description 用户管理

*/

@Api(tags = “借阅管理”)

@RestController

@RequestMapping(“/borrow”)

public class BorrowController {

@Autowired

private BorrowService borrowService;

@Autowired

private BookService bookService;

@ApiOperation(“借阅列表”)

@GetMapping(“/list”)

public R getBorrowList(Integer userId) {

return R.success(CodeEnum.SUCCESS,borrowService.findAllBorrowByUserId(userId));

}

@ApiOperation(“借阅图书”)

@PostMapping(“/add”)

public R addBorrow(@RequestBody Borrow borrow) {

Integer result = borrowService.addBorrow(borrow);

if (result == Constants.BOOK_BORROWED) {

return R.success(CodeEnum.BOOK_BORROWED);

}else if (result == Constants.USER_SIZE_NOT_ENOUGH) {

return R.success(CodeEnum.USER_NOT_ENOUGH);

}else if (result == Constants.BOOK_SIZE_NOT_ENOUGH) {

return R.success(CodeEnum.BOOK_NOT_ENOUGH);

}

return R.success(CodeEnum.SUCCESS,Constants.OK);

}

@ApiOperation(“编辑借阅”)

@PostMapping(“/update”)

public R modifyBorrow(@RequestBody Borrow borrow) {

return R.success(CodeEnum.SUCCESS,borrowService.updateBorrow(borrow));

}

@ApiOperation(“借阅详情”)

@GetMapping(“/detail”)

public R borrowDetail(Integer id) {

return R.success(CodeEnum.SUCCESS,borrowService.findById(id));

}

@ApiOperation(“删除归还记录”)

@GetMapping(“/delete”)

public R delBorrow(Integer id) {

borrowService.deleteBorrow(id);

return R.success(CodeEnum.SUCCESS);

}

@ApiOperation(“已借阅列表”)

@GetMapping(“/borrowed”)

public R borrowedList(Integer userId) {

List outs = new ArrayList<>();

if (userId!=null&&userId>0) {

// 获取所有 已借阅 未归还书籍

List borrows = borrowService.findBorrowsByUserIdAndRet(userId, Constants.NO);

for (Borrow borrow : borrows) {

BackOut backOut = new BackOut();

BookOut out = bookService.findBookById(borrow.getBookId());

BeanUtils.copyProperties(out,backOut);

backOut.setBorrowTime(DateUtil.format(borrow.getCreateTime(),Constants.DATE_FORMAT));

String endTimeStr = DateUtil.format(borrow.getEndTime(), Constants.DATE_FORMAT);

backOut.setEndTime(endTimeStr);

// 判断是否逾期

String toDay = DateUtil.format(new Date(), Constants.DATE_FORMAT);

int i = toDay.compareTo(endTimeStr);

if (i>0) {

backOut.setLate(Constants.YES_STR);

}else {

backOut.setLate(Constants.NO_STR);

}

outs.add(backOut);

}

}

return R.success(CodeEnum.SUCCESS,outs);

}

@ApiOperation(“归还书籍”)

@PostMapping(“/ret”)

public R retBook(Integer userId, Integer bookId) {

// 归还图书

borrowService.retBook(userId,bookId);

return R.success(CodeEnum.SUCCESS);

}

}

用户管理

package com.book.manager.controller;

import cn.hutool.core.bean.BeanUtil;

import cn.hutool.core.date.DateUtil;

import cn.hutool.core.util.StrUtil;

import com.book.manager.entity.Users;

import com.book.manager.service.UserService;

import com.book.manager.util.R;

import com.book.manager.util.consts.Constants;

import com.book.manager.util.consts.ConvertUtil;

import com.book.manager.util.http.CodeEnum;

import com.book.manager.util.vo.PageOut;

import com.book.manager.util.ro.PageIn;

import com.book.manager.util.vo.UserOut;

import com.github.pagehelper.PageInfo;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import org.springframework.beans.BeanUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.security.core.context.SecurityContextHolder;

import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

/**

  • @Description 用户管理

*/

@Api(tags = “用户管理”)

@RestController

@RequestMapping(“/user”)

public class UsersController {

@Autowired

private UserService userService;

@ApiOperation(“用户列表”)

@PostMapping(“/list”)

public R getUsers(@RequestBody PageIn pageIn) {

if (pageIn == null) {

return R.fail(CodeEnum.PARAM_ERROR);

}

// 封装分页出参对象

PageInfo userList = userService.getUserList(pageIn);

PageOut pageOut = new PageOut();

pageOut.setCurrPage(userList.getPageNum());

pageOut.setPageSize(userList.getPageSize());

pageOut.setTotal((int) userList.getTotal());

List outs = new ArrayList<>();

for (Users users : userList.getList()) {

UserOut out = new UserOut();

BeanUtils.copyProperties(users,out);

out.setIdent(ConvertUtil.identStr(users.getIdentity()));

out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));

outs.add(out);

}

pageOut.setList(outs);

return R.success(CodeEnum.SUCCESS,pageOut);

}

// @ApiOperation(“添加用户”)

// @PostMapping(“/add”)

// public R addUsers(@RequestBody Users users) {

// return R.success(CodeEnum.SUCCESS,userService.addUser(users));

// }

@ApiOperation(“添加读者”)

@PostMapping(“/addReader”)

public R addReader(@RequestBody Users users) {

if (users == null) {

return R.fail(CodeEnum.PARAM_ERROR);

}

// 读者默认是普通用户

users.setIsAdmin(1);

return R.success(CodeEnum.SUCCESS,userService.addUser(users));

}

@ApiOperation(“添加管理员”)

@PostMapping(“/addAdmin”)

public R addAdmin(@RequestBody Users users) {

if (users == null) {

return R.fail(CodeEnum.PARAM_ERROR);

}

// 设置管理员权限

users.setIsAdmin(0);

return R.success(CodeEnum.SUCCESS,userService.addUser(users));

}

@ApiOperation(“编辑用户”)

@PostMapping(“/update”)

public R modifyUsers(@RequestBody Users users) {

return R.success(CodeEnum.SUCCESS,userService.updateUser(users));

}

@ApiOperation(“用户详情”)

@GetMapping(“/detail”)

public R userDetail(Integer id) {

Users user = userService.findUserById(id);

if (user!=null) {

UserOut out = new UserOut();

BeanUtils.copyProperties(user,out);

out.setBirth(DateUtil.format(user.getBirthday(),Constants.DATE_FORMAT));

out.setIdent(ConvertUtil.identStr(user.getIdentity()));

return R.success(CodeEnum.SUCCESS,out);

}

return R.fail(CodeEnum.NOT_FOUND);

}

@ApiOperation(“删除用户”)

@GetMapping(“/delete”)

public R delUsers(Integer id) {

userService.deleteUser(id);

return R.success(CodeEnum.SUCCESS);

}

@ApiOperation(“获取当前用户登陆信息”)

@GetMapping(“/currUser”)

public R getCurrUser() {

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal!=null) {

Map<String,Object> map = BeanUtil.beanToMap(principal);

String username = (String) map.get(“username”);

if (StrUtil.isNotBlank(username)) {

Users users = userService.findByUsername(username);

UserOut out = new UserOut();

BeanUtils.copyProperties(users,out);

out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));

Integer identity = users.getIdentity();

String ident = “”;

if (identity == Constants.STUDENT) {

ident = Constants.STU_STR;

}else if (identity == Constants.TEACHER) {

ident = Constants.TEA_STR;

}else if (identity == Constants.OTHER) {

ident = Constants.OTHER_STR;

}else if (identity == Constants.ADMIN) {

ident = Constants.ADMIN_STR;

}

out.setIdent(ident);

return R.success(CodeEnum.SUCCESS,out);

}

}

return R.fail(CodeEnum.USER_NOT_FOUND);

}

}

08 使用说明


最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

[外链图片转存中…(img-83kwa876-1714855538220)]

[外链图片转存中…(img-kXBVmJ2J-1714855538220)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值