这应该是一份最适合你的后端面试指南,建议收藏

写本文之前,其实我自己已经开源了一个 Java学习指南的文档,里面包含了一些基础知识和一些偏后端(Java方向)的知识。到目前为止收获了 6.1k star 以及 1.5 k fork,close 了 10个 pr 以及 10 个issue。开源只是为了让更多的人看到和参与进来,这样文档的正确性和质量才能很好的保证。毕竟,我个人能力、时间以及知识广度和深度有限,一份好的项目的诞生肯定离不开和其他人的共同努力。

另外,我个人觉得不论你是前端还是后端(部分内容可能会偏 Java 方向一点)都能从本文中学到东西。

本人技术水品有限,欢迎各位指正!写的不好的话,请多见谅!

目录

  • 前言

一 简历该如何写1.1 为什么说简历很重要?

  • 1.2-这3点你必须知道
  • 1.3-两大法则了解一
  • 1.4-项目经历怎么写?
  • 1.5-专业技能该怎么写?
  • 1.6-开源程序员简历模板分享
  • 1.7 其他的一些小tips

二 计算机网络常见面试点总结计算机网络常见问题回顾

  • 2.1 TCP、UDP 协议的区别
  • 2.2 在浏览器中输入url地址 ->> 显示主页的过程
  • 2.3 各种协议与HTTP协议之间的关系
  • 2.4 HTTP长连接、短连接
  • 2.5 TCP 三次握手和四次挥手

三 Linux3.1-简单介绍一下-linux-文件系统?

  • 3.2 一些常见的 Linux 命令了解吗?
    #四 MySQL4.1 说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解
  • 4.2 数据库索引了解吗?
  • 4.3 对于大表的常见优化手段说一下

五 Redis5.1 redis 简介

  • 5.2 为什么要用 redis /为什么要用缓存
  • 5.3 为什么要用 redis 而不用 map/guava 做缓存?
  • 5.4 redis 和 memcached 的区别
  • 5.5 redis 常见数据结构以及使用场景分析
  • 5.6 redis 设置过期时间
  • 5.7 redis 内存淘汰机制
  • 5.8 redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
  • 5.9 缓存雪崩和缓存穿透问题解决方案
  • 5.10 如何解决 Redis 的并发竞争 Key 问题
  • 5.11 如何保证缓存与数据库双写时的数据一致性?

六 Java6.1 Java 基础知识

  • 6.2 Java 集合框架
  • 6.3 Java多线程
  • 6.4 Java虚拟机
  • 6.5 设计模式

七 数据结构

八 算法

九 Spring9.1 Spring Bean 的作用域

  • 9.2 Spring 事务中的隔离级别
  • 9.3 Spring 事务中的事务传播行为
  • 9.4 AOP
  • 9.5 IOC

十 实际场景题

点此处”获取往期Java高级架构资料、源码、笔记、视频

Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

前言

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。

运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:

  1. 自我介绍。(你可千万这样介绍:“我叫某某,性别,来自哪里,学校是那个,自己爱干什么”,记住:多说点简历上没有的,多说点自己哪里比别人强!)
  2. 自己面试中可能涉及哪些知识点、那些知识点是重点。
  3. 面试中哪些问题会被经常问到、面试中自己改如何回答。(强烈不推荐背题,第一:通过背这种方式你能记住多少?能记住多久?第二:背题的方式的学习很难坚持下去!)
  4. 自己的简历该如何写。

“80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。

另外,大家要明确的很重要的几点是:

  1. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方;
  2. 大部分应届生找工作的硬伤是没有工作经验或实习经历;
  3. 将自己的项目经历完美的展示出来非常重要。

笔主能力有限,如果有不对的地方或者和你想法不同的地方,敬请雅正、不舍赐教。

一 简历该如何写

俗话说的好:“工欲善其事,必先利其器”。准备一份好的简历对于能不能找到一份好工作起到了至关重要的作用。

1.1 为什么说简历很重要?

假如你是网申,你的简历必然会经过HR的筛选,一张简历HR可能也就花费10秒钟看一下,然后HR就会决定你这一关是Fail还是Pass。

假如你是内推,如果你的简历没有什么优势的话,就算是内推你的人再用心,也无能为力。

另外,就算你通过了筛选,后面的面试中,面试官也会根据你的简历来判断你究竟是否值得他花费很多时间去面试。

1.2 这3点你必须知道

  1. 大部分应届生找工作的硬伤是没有工作经验或实习经历;
  2. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方;
  3. 将自己的项目经历完美的展示出来非常重要。

1.3 两大法则了解一下

目前写简历的方式有两种普遍被认可,一种是 STAR, 一种是 FAB。

STAR法则(Situation Task Action Result):

  • Situation: 事情是在什么情况下发生;
  • Task:: 你是如何明确你的任务的;
  • Action: 针对这样的情况分析,你采用了什么行动方式;
  • Result: 结果怎样,在这样的情况下你学习到了什么。

FAB 法则(Feature Advantage Benefit):

  • Feature: 是什么;
  • Advantage: 比别人好在哪些地方;
  • Benefit: 如果雇佣你,招聘方会得到什么好处。

1.4 项目经历怎么写?

简历上有一两个项目经历很正常,但是真正能把项目经历很好的展示给面试官的非常少。对于项目经历大家可以考虑从如下几点来写:

  1. 对项目整体设计的一个感受
  2. 在这个项目中你负责了什么、做了什么、担任了什么角色
  3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
  4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的。

1.5 专业技能该怎么写?

先问一下你自己会什么,然后看看你意向的公司需要什么。一般HR可能并不太懂技术,所以他在筛选简历的时候可能就盯着你专业技能的关键词来看。对于公司有要求而你不会的技能,你可以花几天时间学习一下,然后在简历上可以写上自己了解这个技能。比如你可以这样写:

  • Dubbo:精通
  • Spring:精通
  • Docker:掌握
  • SOA分布式开发 :掌握
  • Spring Cloud:了解

1.6 开源程序员简历模板分享

  1. 尽量避免主观表述,少一点语义模糊的形容词,尽量要简洁明了,逻辑结构清晰。
  2. 注意排版(不需要花花绿绿的),尽量使用Markdown语法。
  3. 如果自己有博客或者个人技术栈点的话,写上去会为你加分很多。
  4. 如果自己的Github比较活跃的话,写上去也会为你加分很多。
  5. 注意简历真实性,一定不要写自己不会的东西,或者带有欺骗性的内容
  6. 项目经历建议以时间倒序排序,另外项目经历不在于多,而在于有亮点。
  7. 如果内容过多的话,不需要非把内容压缩到一页,保持排版干净整洁就可以了。
  8. 简历最后最好能加上:“感谢您花时间阅读我的简历,期待能有机会和您共事。”这句话,显的你会很有礼貌。

二 计算机网络常见面试点总结

可能是一份最适合你的后端面试指南

计算机网络常见问题回顾

  • TCP三次握手和四次挥手、
  • 在浏览器中输入url地址->>显示主页的过程
  • TCP 协议如何保证可靠传输
  • HTTP和HTTPS的区别
  • TCP、UDP协议的区别
  • 常见的状态码。

下面列举几个常见问题的回答!

2.1 TCP、UDP 协议的区别

可能是一份最适合你的后端面试指南

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

2.2 在浏览器中输入url地址 ->> 显示主页的过程

百度好像最喜欢问这个问题。

打开一个网页,整个过程会使用哪些协议

图片来源:《图解HTTP》

可能是一份最适合你的后端面试指南

总体来说分为以下几个过程:

  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

2.3 各种协议与HTTP协议之间的关系

一般面试官会通过这样的问题来考察你对计算机网络知识体系的理解。

图片来源:《图解HTTP》

可能是一份最适合你的后端面试指南

2.4 HTTP长连接、短连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

2.5 TCP 三次握手和四次挥手(面试常客)

为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。

漫画图解:

图片来源:《图解HTTP》

可能是一份最适合你的后端面试指南

简单示意图:

可能是一份最适合你的后端面试指南

  • 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
  • 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
  • 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端

为什么要三次握手?

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常

第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常

第三次握手:Client 确认了:自己发送、接收正常,对方发送

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值