持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
今天来讲讲本人面试的时候遇到的相关,不一定全面,因为本人只是从Java实习->初级,而且是没什么经验的初级。
算法
算法会问,不一定常问,主要是笔试较多,大厂面试必问,几个遍历算法必须要会。一般学算法都会推荐去牛客或者力扣,算法不是一蹴而就的,要慢慢来,遇到不会的也未必说马上弄懂,第一次不懂可以看看别人的思路跟代码,慢慢敲就熟练了。
学习:
(1)牛客
(2)力扣
(3)B站有个左程云的up主讲得很好
数据结构
数据结构是算法的基础,如果不知道算法怎么入手的,建议多熟练数据库,与算法一样,会问,不一定常问,但是每一种语言的数据结构都有微差别,所以数据结构一般会结合Java一起问,其中比较重要的ArrayList与HashMap等等,ArrayList与HashMap基本上要剖析底层。
简单来说,数组、链表、哈希、栈、队列、树、堆、图等都要会,List跟Map要深究,而后面的树、堆、图思想理解其实不难,难的是代码实现,不过这玩意儿基本也是靠勤学苦练能学会的。
数据结构作为算法的基础,也可以从牛客跟力扣上面找到对应的题目学习,如果实在不会,那就去B站看视频,一搜一大堆,建议刚入行或者刚学习编程语言的小伙伴多去B站,IT学习资源真的非常多
Java基础
没什么好说的,就是跟Java语法相关的内容,比如基本语法、基本数据类型跟包装类型、与String等,不要小看这几个东西,面试会结合JVM来问,比如常量池、String创建相关等等等等
还有比如Java后面版本新增特性,最主要的是Java8跟Java11,当然其他版本有必要还是得了解一下
Java高级
这部分比较重要,比如注解跟反射,甚至上面的Java数据结构都于高级篇,以后在实际开发中,注解基本上是常用中的常用了,而反射又是注解的基础,而现在的框架又普遍使用注解,面试基本上逃不过了
Java基础跟高级其实在网上也可以随便学习了,很多优秀的网站,比如菜鸟教程,当然还是那个B站上面一大堆视频,从安装环境到安装工具,一步一步教,只要你想学,总会有教程的。
Java进阶
Java进阶就比较恶心咯,包括线程、JVM等,线程除了问一些基本的创建跟周期以外,还会结合场景题考察;而JVM就大量大量的面试题,大家都知道,Java每年都涌入一堆人,简单来说就是越来越卷,人家面试官肯定愿意花更少钱挑理论+实际知识更丰富的人,导致现在JVM基本上是必问,包括JVM模型、类加载器、垃圾回收机制、JVM调优等等等,JVM是一个比较难理解的东西,学习跟上面Java基础跟高级差不多。
数据库
数据库不是直接就是mysql,还有“数据库”本身的知识,比如数据库的acid原则、事务等、主从复制,不过一般会结合具体实现(mysql、oracle、sqlserver)
主流的数据库mysql、oracle、sqlserver,学会一种,其他两种就不难了,因为思想都是一样的(这让我想起了我们学校教了oracle、sqlserver,结果出来我天天用mysql),知识语法会有点出入,mysql用得最多,问的也最多,不仅包括基本使用,比如CRUD基础、索引、函数、执行计划、优化、如何保证数据库特性等
JAVAWEB
老师:好了,学会了Java跟数据库,你们写个网站吧,对了,关于前端东西你们回去自己看
我当时差点没哭出来,年轻不懂事,不知道选了这个专业是干啥的,也没有主动学习,甚至都不知道B站那么多学习资源(墙裂推荐!!!!),当然了,不止B站,具体哪些学习网站可以到掘金也就是本站去搜,知乎其实也有推荐的。
主要是学了java+数据库+前端,前端一般是html+css+js,当然,初学Web的时候是Java+前端=Jsp写的前端代码,而后端代码主要是servlet、session、cookie等,这里就会提到JDBC了,每个学web的人都不得不接触的东西,那就是Java后端代码跟数据库的连接--JDBC,当时真没学过,老师上课也是随便哈拉几句,让我们写一个简单的网站,转专业转专业转专业转专业……--当时我满脑袋这个想法
JAVAWEB实现一个网站是很多年前的做法了,现在基本上没有公司用,所以其实很多人都建议不要学这个,但我面试其实是有被问到过,而且我觉得还蛮重要的,比如说JDBC,以后用的数据库框架基本上底层也是差不多。
网络
网络部分包括io编程、http协议、tcpUDP协议等等,建议在学校教的网络课认真学习,当然了现在马上去B站补课也不晚。
web+网络还会引出登录相关的问题,比如单点登录、分布式情况下如何保持登录状态等等
还有加密算法、数据证书等
还有安全方面,比如xss,csrf等
框架
包括SSM(springmvc+spring+mybatis),额外延申springboot(spring进阶版,其实就是包装了一下Spring),现在不会这个就别去面试了,其实在SSM框架之前还有struct、struct2、hibernate,有小部分公司还在用这个,当然了我是没有学过,SSM框架大部分都是问使用基础,而有些公司会问底层……看着办吧,比如springboot启动流程……tm的,背这个流程我都嫌烦
还有springcloud(非必须,但随着时间的推移会成为必须,现在很多公司都要求了),springcloud不是一个框架,而是一系列框架,一般说微服务就是指springcloud,当然了,现在国内SpringCloud Alibaba很流行,感觉上比springcloud要好
分布式
扯到微服务就不得不扯到分布式,包括分布式架构、使用、锁、事务等等,这个其实结合场景问比较多,比如给你一道题问如何设计这个分布式锁、如何保证分布式事务
中间件
redis缓存中间件,rabbitmq消息中间件,shardingjdbc数据库分库分表中间件等等;每一种中间件都有不同的技术,比如缓存中间件有redis跟mongodb,消息中间件有ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,这里只是举个例子,学了什么中间件在简历写什么,面试官会看着办得了,也是会结合场景题来问
前端
……看着办吧