总结
三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。
- 第一个是算法
关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。
而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本
《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题
《算法的乐趣》共有23个章节:
- 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)
基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)
- 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)
一、背景
了解下有利于消化
这里快速说下 Java Web 开发的背景,作为Android开发,在学习后台开发上无疑用 Java 做敲门砖是成本较低的选择,Java Web 与 Android 之间的相互转岗也屡见不鲜。
起初的 Java Web 开发并没有明确的前后端之分,如今也依旧存在前后端不分离的项目,只是随着时间发展,从项目管理维护、开发职责和效率的考虑下,慢慢的有了前后端职责之分。
对于Android开发而言,后端通俗而言就是写restful接口的。
Java Web 大致发展历程如下图,从 Struts2
开始的 MVC 模式,再到 Spring
的 控制反转(IOC)和切面编程(AOP) ,再到 SpringBoot 全家桶,其门槛也在逐步降低。对于这个历程感兴趣的可以自行了解下,后续主要推崇Spring
大家庭。
事实上对于 Android 开发而言, Spring
并不会是一个陌生的概念,其 核心理念之一 IOC (也称依赖注入) 和使用逻辑与 Dagger
如出一辙,所以在入门时 《Spring实战(第4版)》 这本书相信会 Android 开发者是不错的选择。
二、框架选择
Spring Boot 全家桶快到碗里来
Java Web 的世界同 Android 一样存在各类框架,也许一些前辈们都建议不要从学习框架开始,但是我个人而言更习惯从_实用性_切入: 选择一个主流框架学习,挑一个开源项目对照实践,之后完成一个小项目躺坑,最后才开始深入去学习感兴趣的点。 毕竟万事开头难,如果一开始太过枯燥,难免让人“把持不住”。
在 Spring 断断续续的学习中,主要接触了 SSH
(曾经) 和 SSM
(如今) 两种组合开发框架,至于怎么选择,你懂的。
- SSH:Struts2 做控制器(controller) + Spring 管理组件 + Hibernate 负责数据库。
- SSM: SpringMVC 做控制器(controller) + Spring 管理组件 + MyBatis 负责数据库。
作为 Android 开发者,如果你使用过或了解过 Dagger ,那么理解和使用 Spring
并不难。通过各类注解如 @Contorller
、@Service
、@Configuration
等去标明类的用途,通过 @Autowired
去注入使用的方式,相信会让你倍感亲切。
如果说 Spring
是类似 Dagger
的注入和管理实体的容器框架,那么SpringMVC
就是基于 Spring
功能之上添加的 Web 框架。
对于 Android 开发而言,MVC
肯定是不会陌生的,实际上后台开发人员通常就是写个Controller
提供个 Model
给你。而 Hibernate
和 MyBatis
都是持久层框架,属于能方便使用如 MySql 等数据库的 ORM 框架。
如果说 Spring
和 SpringMVC
是 Android 开发者较友好的选择,那么 Spring Boot
则是你的“绿色通道”。 Spring Boot
又称之为全家桶,因为它集齐了各类常用的开发框架,同时降低了 Spring 开发的门槛,更是简化了各种配置过程,而且 Jetbrains 大家庭支持它!
所以现阶段而言,个人认为 Spring
、SpringMVC
、SpringBoot
是 Android 开发者学习入门 Java Web 的不错选择。
先理解 Spring 设计模式,再学习 SpringMVC Service/Controller 等的开发,最后使用 SpringBoot 快速搭建 Web 项目。 当前这只是一个开始,后续的路诸如还有:
- 数据库的学习:mysql、mongodb
- 持久层框架的学习:hibernate 、mybatis
- 缓存框架的学习:ehcache、redis
- 安全权限框架的学习:shiro、spring security
- 分布式框架的学习:dubbo、spring cloud
最后总结我的面试经验
2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。
另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。
BAT面试经验
实战系列:Spring全家桶+Redis等
其他相关的电子书:源码+调优
面试真题:
03fab5e56a57acb)收录**