关于java:面经分享附答案字节系统架构一面后端开发

3次阅读

共计 2965 个字符,预计需要花费 8 分钟才能阅读完成。

一面

1)HTTP 三次握手,状态码,交互细节

HTTP 三次握手就是 TCP 三次握手,HTTP 是应用层协定,它的工作是与服务器替换信息。至于怎么连到服务器,怎么保证数据正确,HTTP 不论。事实上它总是假如数据是正确地传输的。

而 TCP 的工作是保障连贯的牢靠,包含防丢、防错。为了做到这些,在首次连贯时要进行 3 次握手,以保障的确连贯到了指标机器。而连贯上后具体传送什么数据,TCP 是不论的

状态码:1xx 信息类提醒,2xx 申请胜利,3xx 申请重定向,4xx 服务器异样,5xx 客户端异样

交互细节应该就是 TCP 三次握手

2)为什么要三次握手

3)四次挥手,状态码,传输细节,为什么握手要三次,挥手要四次

4)数据链路层怎么传输数据的,开展说说

5)ARP 协定中网关怎么去转换 IP 地址到对应 MAC 地址的

关键点:ARP 高速缓存、播送 ARP 申请报文、ARP 响应报文

6)如果数据包不在以后子网内,怎么传输到指标子网网关的

首先,如何判断这个数据包的指标 IP 地址和以后主机的 IP 地址是否在同一子网(网段)内?利用子网掩码能够判断两台主机是否中同一子网中。若两台主机的 IP 地址别离与它们的子网掩码相“与”后的后果雷同,则阐明这两台主机在同一子网中。

其次,网关到底是什么呢?网关本质上是一个网络通向其余网络的 IP 地址(个别都是路由器的 IP 地址)。而默认网关(Default Gateway)就是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来解决数据包

当一台计算机发送数据时,依据数据包中的指标 IP 地址,通过子网掩码来断定指标主机是否在本地子网中,如果指标主机在本地子网中,则(通过二层设施 – 交换机)间接发送即可。如果指标不在本地子网中则将该信息送到缺省网关 / 路由器,由路由器将其转发到其余网络中,进一步寻找指标主机。

7)MySQL 的行锁怎么实现的

InnoDB 行锁是通过给索引上的索引项加锁来实现的

8)MySQL 的事务,开展说说

先解释下 ACID 个性,而后说下 MySQL 如何保障 ACID 的:锁来保障隔离性(可扩大四种并发问题、四种隔离级别、行锁的三种算法、着重提一下 Next-Key Lock 解决幻读问题),redo log 保障持久性和原子性(持久性对应 WAL 和 CheckPoint,原子性对应 redo log 两阶段提交),undo log(MVCC)保障一致性

9)MySQL 索引理解吗,索引是怎么实现的

10)索引有哪些,介绍下

聚簇索引、非聚簇索引、惟一索引、联结索引、笼罩索引、前缀索引

11)联结索引两头能够有 null 值吗,为什么,测试过吗?

12)B+ 树的特点,原理

13)B+ 树索引和 Hash 索引的区别,优劣

14)理解死锁(DeadLock)吗

什么是死锁?两个线程相互申请对方的资源,并且不开释本人的资源,造成循环期待,导致死锁。

死锁的四个必要条件?互斥条件、申请和放弃条件、不剥夺条件、循环期待条件

如何防止 / 预防死锁?毁坏四个必要条件其中之一即可:

  • 毁坏互斥条件:不可行
  • 毁坏申请和放弃条件:线程启动时一次性申请完所有须要的资源,运行途中不容许申请其余资源
  • 毁坏不剥夺条件:申请新的资源时得不到满足,必须开释曾经放弃的所有资源,待当前须要时再从新申请
  • 毁坏循环期待条件:给资源编号,只容许程序申请资源

15)MySQL 怎么解决死锁的

16)平时遇到过死锁吗,怎么解决的

17)JVM 的垃圾革除说一下

18)垃圾收集算法有哪些

三大垃圾收集算法:

  • Mark-Sweep(非移动式算法,不须要 STW)
  • Mark-Copy(新生代垃圾收集算法,移动式算法,须要 STW)
  • Mark-Compact(移动式算法,须要 STW)

19)介绍下晓得的垃圾收集器有些什么

新生代:

  • Serial(Mark-Copy、单线程)
  • ParNew(Mark-Copy、多线程)
  • Parallel Scavendge(Mark-Copy、多线程;关注吞吐量;自适应调节策略)

老年代:

  • Serial Old(Mark-Compact、单线程)
  • Parallel Old(Mark-Compact、多线程)
  • CMS
    ◾Mark-Sweep、多线程;
    ◾谋求低提早;
    ◾四个阶段(初始标记、并发标记、从新标记、并发革除),第一和第三阶段须要 STW;
    ◾采纳“增量更新”解决“对象隐没”问题;
    ◾个别还会设置 Serial Old 做老年代收集预案,因为 CMS 会呈现并发失败问题“Concurrent Mode Failure”(无奈解决“浮动垃圾”导致堆被齐全占满而报错 or CMS 垃圾收集运行期间预留的内存无奈满足程序调配新对象的须要),这时候就会触发 Serial Old 用 Mark-Compact 算法做老年代收集;
    ◾CMS 基于 Mark-Sweep 算法会有大量空间碎片产生,往往会呈现老年代还有很多残余空间,但就是无奈找到足够大的间断空间来调配以后对象,而不得不提前触发一次 Full GC

面向全堆:

  • G1
    ◾Mark-Copy、多线程;
    ◾四个阶段(初始标记、并发标记、最终标记、筛选回收),第一和第三和第四阶段都须要 STW;
    ◾采纳“原始快照”解决“对象隐没”问题;
    ◾面向部分收集、基于 Region 的内存布局;
    ◾非纯正地谋求低提早,而是在提早可控的状况下取得尽可能高的吞吐量;
    ◾G1 无论是为了垃圾收集产生的内存占用还是程序运行时的额定执行负载都要比 CMS 要高;
    ◾目前在小内存利用上 CMS 的体现大概率依然要会优于 G1,而在大内存利用上 G1 则大多能施展其劣势

20)垃圾的判断办法,援用计数法为什么用的没有 GCRoot 的多,毛病是什么,为什么

两大办法:

  • 援用计数法(无奈解决循环援用问题)
  • 可达性分析法
    ◾两个阶段:根节点枚举、对象图遍历
    ◾可扩大根节点枚举必须进行 STW(OopMap,平安点和平安区域);三色标记法分析为什么对象图遍历实践上也必须进行 STW(浮动垃圾、对象隐没),因为这个阶段工夫较长所以设计了两种计划(增量更新、原始更新 SATB)使得对象图遍历不须要进行 STW

21)平时测试过 JVM 的垃圾革除吗

22)Redis 的理解,介绍下

能够说下 Redis 是基于内存的,单线程工作的缓存,先介绍下为什么说 Redis 是单线程的(关键点:IO 多路复用、文件事件处理器);而后能够介绍下除了基于内存和单线程,Redis 还有哪些个性使得它那么快(Redis 非凡设计的数据结构 ziplist、skiplist,SDS 等;Redis 的虚拟内存机制)

23)Redis 的长久化

两大长久化机制:

  • RDB:存储数据库状态,二进制文件 dump.rdb;SAVE、BGSAVE fork 子过程主动间隔性保留
  • AOF:追加写入,存储命令(先写入 AOF 缓冲区,依据 appendfsync 参数决定何时写入并同步磁盘);AOF 重写、fork 子过程 AOF 后盾重写(AOF 重写缓冲区)

24)算法题:删除链表的倒数第 k 个节点

总结:齐全没有问我的项目问题,计算机网络局部问的特地细!死问我数据链路层的传输原理,答得磕磕绊绊,有好些题都没有答得很好,算法题倒是挺简略的,最初反诘,面试官说我答得挺好的,但有些中央细节上还须要再学习优化下。

Java 学习材料

小编筹备了一些 java 复习资料给程序员敌人们, 蕴含近几年大厂面试真题、Java 外围知识点、java 视频面试题解析等材料,有须要的小伙伴能够【间接点击此处】即可获取!!

正文完
 0