备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享

前言
23 秋招已经开始了!作为应届毕业生求职最友好的季节,今年很多大厂的提前批并没有释放太多岗位,而是选择了秋季招聘。后续的补充和春招,竞争会更加激烈!本文将从以下几个方面与您讨论,如何准备和获得更多的软件开发职位。

1.市场环境

2.面试准备

3.技术提升

一、市场环境
1.裁员的一年
从今年上半年大家可以看到,无论是中小工厂还是一线互联网厂商都在裁员。当然,对于有校招 buff 的大一新生来说,这种感觉不是很强烈。但是,如果校招没有拿到 offer,最后我们只能以社会招聘的身份去应聘,我们初出茅庐的资历会更加残酷,所以一定要利用好我们的校招应届毕业生。
备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享_第1张图片

2.面试环境

今年特别能感觉到,岗位比以前减少了。除了 985/211 和卷王,想要体验一个人 10offer 的快乐,并不是那么容易。现在背完八股文,原理分析可能需要为场景实现做更充分的准备,以备竞争加剧。

二、面试准备

1.招聘信息来源获取

秋季招聘第一步,首先要了解公司的招聘时间。可能有些大学会在开学后举办校内企业宣讲会,但这并不适用于所有大学,所以一定要提前了解企业的招聘时间和地点。对于大部分已经有目标企业的同学来说,关注相应的官网就足够了。想海投的同学就可以选择牛客网或者一些做校招时间整理的公众号,都能都获取其中信息。

整体的招聘节奏:

  • 提前批(适合十分优秀的应届生)

  • 秋招(岗位最多,拿 offer 的黄金期)

  • 秋招补录(存在秋招钻空子的可能)

  • 春招(岗位少,应聘同学中不乏考研失败的同学)

  • 春招补录(岗位极少)

2.简历准备

当我们知道招聘时间后,我们就会开始准备自己提交的简历。很多同学认为简历没那么重要。毕竟面试的时候会有一对一的输出时间,可以显示他们的技术实力。但实际上,作为学校招生,简历往往能显示出你的逻辑能力和学习习惯。

简历必备四要素:

  • 个人简介

  • 专业技能

  • 项目经历

  • 自我评价

a.个人简介

主要包含基本信息,教学背景、获得荣誉三项,描述简单明了。不要去描述你的爱好特长。

备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享_第2张图片

推荐格式↓:

备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享_第3张图片

b.专业技能

什么是不好的技能描述?

备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享_第4张图片

​没有具体描述掌握技能,而是使用了技能和能力的各种形容词。(丰富,不错)这种技能描述其实会显得很空洞,面试官看到后不知道从哪里问你更具体的内容。所以有时候就会导致你写的很泛,面试官问的也很泛,更会触及到你的知识盲区,加速面试的结束时间。

这里分享四份拿到腾讯 c++后台开发 offer 的简历,其中关于专业技能描述的部分:

备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享_第5张图片

c.项目经历

对于校招生而言,对于项目往往是比较头大的。一部分学校跑的项目很老很小,很多时候和岗位对接的方向关连并不大,其次就是在实习中接触的项目,自己能够了解的不多,不成体系。所以在项目描述这一块都是虚实交互,整个项目描述的很大,而并不对自己参与部分做详细阐述。这样的意义并不大。

为什么需要在简历中要有项目经历这一块,其核心不是去看你做的项目有多大,而是去看你在团队协作中有没有去体现你的价值,遇到的问题,有没有通过自己的研究去解决,看你的解决问题能力。

d.自我评价

自我评价的结果是一定要有展现量的。比如说:我是一个和善,善于沟通表达,努力上进的人。如何去体现?

换一种方式:

  • 我对于技术比较爱钻研,读书期间看过 nginx 源码,redis 源码,Linux 内核等等

  • 我善于总结与归纳,之前讲自己学过的技术内容,四年时间在某某平台上整理了 2000+的技术博客。

既能体现出你的个性方面的特色,又能有成果数据给到面试官,这样无疑是加分的。
1、你认为项目中最重要的过程是那些?

分析、设计阶段 尽量找出进度的优先级

2、如果给你一个4-6人的team,怎么分配?

挑选一技术过硬的人作为我的替补。其它人平均分配任务,每周进行全面的任务分配,每个人领取一周的工作量,每天汇报进度。

3、简述软件开发文档?

需求分析、概要设计、详细设计、操作手册、测试计划

4、你认为一个项目如何才正确?

是企业利益最大化。

5、你经常读那些书?

Java编程思想 Java模式

6、springmvc的工作原理?

客户端请求提交到DispacherServlet由DispacherServlet控制器查询HandlerMapping,找到处理请求的Controller

Controller调用业务逻辑处理后,返回ModelAndView

DispacherServlet查询视图解析,找到ModelAndView指定的视图

视图负责将结果显示到客户端

7、springmvc 和struts2的区别?

机制 :springmvc 的入口是servlet,struts2的入口是filter

性能 : springmvc 会比struts2快一点。springmvc是基于方法设计,struts2是基于类,每次发一次请求都会实例一个action,每个Action都会被注入属性。

参数传递:struts2是在接受参数的时候,可以采用属性来接收参数,这家说明可以让多个方法共享

拦截器机制:struts2有自己的interceptor机制,springmvc用的是独立的AOP方式,strtus2的配置文件还是比springmvc大,springmvc使用简洁,springMVC比struts2开发效率要高、

8、struts2工作原理?

客户端初始化一个执行servlet的请求

这个请求经过一系列的过滤器,被FilterDispatcher调用,询问ActionMapper来决定是否调用Action

FilterDispatcher把请求的处理交给ActionProxy

ActionProxy通过Configuraction Manager询问相关的配置文件,找到需要的Action类

ActionProxy创建ActionInvocation的实例

ActionInvocation调用Action前后的拦截器

Action执行完毕后,根据struts、xml配置文件找到对应的视图页面

9、Hibernate 工作原理?

读取并解析配置文件

创建SessionFactory

打开Session

创建事务:transaction

持久化操作

提交事务

关闭Session

关闭SessionFactory

10、为什么要用spring?

spring能够很好的和各大框架整合

spring 通过IOC容器管理了对象的创建和销毁 工厂模式

在使用hiberna,mybatis的时候,不用每次都编写提交的事务的代码,可以使用spring的AOP来管理事务 AOP其实就是一个动态代理的实现

声明式事务和编程式事务

11、mybatis的优缺点?

优点:SQL写在XML中,便于统一管理和优化

提供映射标签,支持对象和数据库的orm字段关系映射

可以对SQL进行优化

缺点: SQL工作量大

mybagtis移植姓不好

不支持级联

12、谈谈SSH整合?

struts(表示层)+spring(业务层)+hibernate(持久层)

struts是一个表示层的框架,主要用于接收请求,分发请求。struts其实属于MVC中的VC层次的

hibernate是一个持久层的框架,主要负责与关系数据库的操作

spring是一个业务层的框架,是一个整合的框架,能够很好的黏合表示层和持久层。

13、maven是什么?有什么作用?

是一个项目管理、构建工具

作用:帮助下载jar 寻找依赖,帮助下载依赖 热部署、热编译

14、WEB 前端优化?

减少HTTP请求的数量(合并css、js、图片)

利用浏览器的缓存机制

利用GZIP压缩机制:只针对文本类资源有效

把CSS文件放在HTML开头

把javascript文件放在HTML结尾

避免CSS表达式(判断浏览器)

使用javascript压缩

减少DNS查找

避免重定向

使用ajax

15、安全性测试

利用安全性测试技术,找到潜在的漏洞

16、事务隔离级别(4种)

Serializable(串行化):一个事务在执行过程中完全看不到其他事物对数据库所做的更新(事务执行的时候不允许别的事务并发执行,事务只能一个接着一个地执行,而不能并发执行)

Repeatable Read(可重复读):一个事务在执行过程中可以看到其它事务已经提交的新插入的记录,但是不能看到其它事务对已有记录的更新

Read Commited(读已提交数据):一个事务在执行过程中可以看到其它事务已经提交的新插入的记录,而且能看到其它事务已经提交的对已有记录的更新。

Read Uncommitted(读未提交数据):一个事务在执行过程中可以看到其它事务没有提交的新插入的记录的更新,而且能看其它事务没有提交到对已有记录的更新

17、MYSQL存储引擎(4种)

MyISAM它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:、frm(存储表定义) ,YD(MYData,存储数据) , MYI(MYIndex,存储索引),InnoDB,InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

(1)自动增长列

(2)外键约束

MEMORY

memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是、frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

MERGE

merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。

18、事务传播特性

1、 PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启

2、 PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行

3、 PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

4、 PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

5、 PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。

6、 PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常

7、 PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中、 如果没有活动事务,

19、TCP协议(传输控制协议Transmission Control Protocol )

建立链接:三次握手(1、给对方拨号 2、喂,您好,请问是哪位 3 我是小刘)

关闭链接:四次挥手保证可靠

20、shiro 是什么

Apache Shiro 是一个强大易用的java安全框架,提供了认证、授权、加密和会话管理等功能。

认证 :验证用户来核实他们的身份

授权:会话管理

21、 项目技术

前台:面向的客户

前端:css div js jquery

后端:springmvc spring mybatis

使用的优化技术:

(1)页面静态化(Freemarker)

(2)缓存

1) 页面缓存(OSCache)

2)分布式缓存(memcached)

(3) 图片分离(服务器)

(4)负载均衡(解决高并发终极策略)

后台:(管理对象)

前端:css html js jquery

后端:springmvc spring mybatis

数据库:mysql

图片分离框架:jersey

22、什么RESTful(表现层状态转化)架构?

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

你可能感兴趣的:(程序员,java,后端,java,面试,spring,redis,架构)