11.5任务 (今天就这样吧 算是完成了任务的一半)

30 阅读14分钟

q:https一定是安全的吗,会被中间人攻击吗
a: 安全肯定是安全的 除非自己作死 比如

image.png 所以只要自己不作死那么就是安全的 xiaolincoding.com/network/2_h… 直到目前为止https还是安全的

q:linux管道的概念,是干什么的
a: 管道是用来传输数据的呗 分为匿名和命名管道 匿名管道就是linux里面的| 属于单向传输 进程之间的消息传递

q:数据库为什么要进行备份,备份的策略
a: 数据库备份不就是为了防止i数据丢失吗 策略1:### . 使用 mysqldump 命令 策略2: 使用MySQL workbench developer.aliyun.com/article/134…

q:java的fork/join框架,是解决什么问题的
a:由于分治这种任务模型的普遍性,Java 并发包提供了一种名为 Fork/Join 的并行计算框架,专门用于支持分治任务模型的应用。 分治就是把一个任务变成多个子任务 然后最后合并子任务 在这个计算框架中,Fork 代表任务的分解,而 Join 代表结果的合并。 Fork/Join 计算框架主要由两部分组成:分治任务的线程池 ForkJoinPool 和分治任务 ForkJoinTask。

这两部分的关系类似于 ThreadPoolExecutor 和 Runnable 之间的关系,都是用于提交任务到线程池的,只不过分治任务有自己独特的类型 ForkJoinTask。 javabetter.cn/thread/fork…

q:当一个用户故意大量刷好评,差评的时候,我们要采取什么方法
a:感觉像是缓存

如何学习新的语言,适应新的环境

q:TCP滑动窗口是什么?有什么作用?
a:主要解决了tcp要一个字节就要确认一次的问题 很慢 定义:滑动窗口是TCP协议中的一个重要机制,用于控制、管理发送方和接收方之间的数据传输。是TCP实现流量控制和拥塞控制的基础。 为了解决这个问题,TCP 引入了窗口,它是操作系统开辟的一个缓存空间。窗口大小值表示无需等待确认应答,而可以继续发送数据的最大值。 TCP 头部有个字段叫 win,也即那个 16 位的窗口大小,它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度,从而达到流量控制的目的。 “用接收窗口大小控制发送窗口大小,再由发送窗口大小控制发送速率。” blog.csdn.net/qq_46631497…

q:数据库连接是什么?在什么场景使用?
a:blog.csdn.net/qq_36330993… 我理解的是springboot怎么连接数据库

q:Redis事务是什么?怎么实现ACID的?
A:redis事务和sql事务是不同的 redis事务如果命令中途出错事务的后续命令也会继续执行下去,并且之前执行的命令也不会有任何影响 不过sql会回滚 blog.csdn.net/Tc_lccc/art… 怎么保证的A属性 只有当命令不出现语法错误、服务不宕机的情况下才能够满足原子性 对于I属性 隔离性问题的产生在于数据库系统多线程执行,但Redis是单线程执行命令的,并且执行事务时是对事务队列中的命令依次执行,因此Redis不会出现隔离性问题 一致性通常由业务层来校验保证,在不宕机的情况下是满足一致性的 虽然有AOF RDB保证数据的不丢失 但是都不能完全保证 所以持久性也不能保证 当持久化策略改为aof每次刷盘时,则能够满足持久性

q:concurrenthashmap是什么?它比hashmap的好处? A:ConcurrentHashMap是Java中提供的一个线程安全的HashMap实现,它采用分段锁和CAS(Compare and Swap)操作等技术来实现高并发和线程安全。 1.7采用的分段锁 1.8是volatile+CAS+SYN保证的线程安全和高并发 他们两个的底层是一样的 数组链表红黑树 然后数组为主体 区别就是前者安全后者不安全 zhuanlan.zhihu.com/p/162996476

q:什么是Java中的死锁?如何避免死锁?
a:java中的死锁是一种编程情况,其中两个或多个线程被永久阻塞,Java死锁情况出现至少两个线程和两个或更多资源。 blog.csdn.net/suchahaerka… 出现了死锁就用jstack进行排查 这是解决死锁 怎么避免呢 其实就是破坏四个条件的其中之一

q:如何实现一个文章订阅系统,用户可以订阅主题、作者系统?
www.yuque.com/snailclimb/… a: 什么是新闻订阅呢?根据 Facebook 的帮助页面,“新闻订阅是你主页中间的故事列表,它会不断更新。新闻订阅包括状态更新、照片、视频、链接、应用活动以及你在 Facebook 上关注的人、页面和群组的喜欢” [1]。这是一个流行的面试问题。常见的类似问题包括:设计 Facebook 新闻订阅,Instagram 订阅,Twitter 时间线等。

在过往的实习或学习中你尝试用过创新的思路或方法解决同样的问题吗?请举例子说明
学习导师项目或者实习过程中,你如何上手去开发需求,更快融入团队

第一次面试有点紧张忘记录音了,能想起来多少算多少吧

时长:1h(后15min闲聊)

项目:

点赞,关注怎么设计的?

点赞为什么要使用Redis?

项目中哪些地方用到了缓存?

RabbitMq怎么用的?有哪些使用场景?

q:怎么保证缓存一致性的? a:其实就是在问缓存和数据库数据怎么保证一致性 说白了就那三个模式 常用的就是旁路缓存模式 但是这些模式也有一致性问题 也不是一定保证数据的一致 所以这个文章就是讲怎么解决 cloud.tencent.com/developer/a… 但是随着业务规模的增长,数据库的吞吐量就无法满足业务的性能需要的。

一个常见的优化方案就是增加使用缓存来解决业务高并发读的问题。

文章里面说了旁路缓存模式有两者写入的方式 第一就是#### 先更新数据库再更新缓存 第二就是先更新数据库再删除缓存 反正还有很多种 但是不管咋样都会出现问题从上面出现缓存与数据库不一致的几种场景,可以归纳缓存与数据库不一致的主要原因是:

  • 并发
  • 两步更新操作非原子性,第二步可能失败。

对于并发引起的一致性问题,可以通过延时双删来解决。 对于原子性问题引起的一致性问题,则是想办法确保第二步操作最终成功。 所以这两个是解决旁路缓存策略一致性的方法

q:你在项目中使用到的缓存有设置过期时间吗?怎么设计的? a:

场景:

q:现在有班级,学生,老师,怎么设计数据表? a:blog.51cto.com/u_16099320/… 可能在问表的字段吧

q:怎么获取数据表中前100个数据? a:mysql的话不就是limit命令吗


select * from table_name limit 10;//检索前10行记录
select * from table_name limit 510;//从第6行开始,检索10行记录,即:检索记录行 6-15 

所以检索钱100 那么就limit 100 blog.csdn.net/li149028087…

q:group by有用过吗?使用场景有哪些? a:这个命令是用来统计的命令

image.png 可以看到 group by 后面的列 一定会出现在select的条件里面 where一定在group by的前面

q:现在有一张数据表的数据量太大了,该怎么处理? a:不能一来就分库分表 先看看能不能冷热分离 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 反正就是不要一来就分库分表

image.png

blog.csdn.net/Y_hanxiong/…

八股:

q:Java中集合都有哪些?讲一讲他们的区别 a:

q:为什么大多数函数接口返回的都不是Map类型?(记不太清了)——key太灵活,不方便后续的维护 a: 简单点说我们应该面向抽象编程而不是细节。 map的话不好抽象 比如对于arraylist linkedlist 只需要用一个list即可涵盖所有情况了不用到处改 www.zhihu.com/question/37…

q:SpringCloud常规组件有哪些? a:五大组件

Spring Cloud本身不是一个框架,他是一系列框架的合集,他可以利用Spring Boot的开发便利性可以快速的完成分布式项目的基础搭建。 blog.csdn.net/weixin_4877…

image.png

q:SpringBoot自动装配? a:

q:yml,propertities,命令行参数的执行顺序是什么? a:

讲讲JVM的内存区域,介绍一下他们分别有什么用

Mysql的存储引擎有哪些?

说下Linux,Docker的常用命令有哪些?

q:你知道在Linux下怎么查看Java线程吗? a:blog.csdn.net/VIP099/arti…

q:杀死线程的命令是什么? a: 杀死进程是kill 线程也是 要传入线程id

闲聊

反问:

对我以后学习的建议?

公司的主要业务是什么?

总结:第一次面试体验很好,尽管对面没有开摄像头,但是全程语气非常温和,有交互,答完了也会告诉你答的怎么样,体验很好。

给出的建议就是还是要多加强实践。总体来说其实并不算难,在mysql方面问了很多。

哎,习惯了黑马的半成品,写项目也主要完成的都是那后一半,对数据库也是习惯了mybatis-plus的api,而对于表的建立与结构关系,表与表之间的关系实操的还是不行,一句话:还得练

烽火星空java面经

10.18线下
技术面
1. 自我介绍
q: spring常见注解
a:blog.csdn.net/guorui_java…

q: 设计模式(只说了单例)
a:

q: 事务的作用
a:数据库事务: 数据库事务通常指对数据库进行读或写的一个操作序列。 它的存在包含有以下两个目的: 1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。 2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。 2.系统中的事务: 处理一系列业务处理的执行逻辑单元,该单元里的一系列类操作要不全部成功要不全部失败 blog.csdn.net/weixin_4570…

7. java的异常
q:io流
a:输入流(Inout Stream)与输出流(Output Stream)合称为数据流(Data Stream) 输入输出流的来源和接收者可以是文件、内存、网络连接等

写入数据的原理:Java程序→JVM→OS→OS调用写入数据的方法→写入成功→手动释放OS资源

读取数据的原理:Java程序→JVM→OS→OS调用读取数据的方法→读取成功→手动释放OS资源 xie.infoq.cn/article/b12…

q: 读取一个文件
a:blog.csdn.net/zwj10307112…

11. 讲讲java动态代理
12. java集合
13. Arraylist和Linkedlist使用场景

15. 知道哪些队列及其具体API
a: 问的可能是类吧 blog.csdn.net/weixin_4561…

q:数据库表的连接
A:blog.csdn.net/weixin_4484… 就是join和union

q: 创建一个对象的几种方式
a:blog.csdn.net/Yearingfort…

20. 创建线程的几种方式

22. 为什么要用多线程

24. 为什么要用线程池

26. Controller层的请求参数是文件,如何接收?
blog.csdn.net/CJPSR/artic…

28. 序列化和反序列化

q":为什么要用微服务,一定比单体好吗
A:zhuanlan.zhihu.com/p/462078779 肯定不一定啊 因为微服务的开销是要维护多个系统 并且一旦一个出问题了可能也会影响其它的系统

q: springcloud解决了什么问题 a:Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统基础设施的开发流程。例如,服务发现/注册、配置中心、消息总线、负载均衡、断路器、数据监控等功能,都可以用 Spring Boot 的开发风格做到一键部署和启动 Spring Cloud 并没有“重复制造轮子”,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装,屏蔽了复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud 不同于其它 Spring 的优秀项目,它不再是一个基础框架类,而是一个更高层次的、架构视角的综合性大型项目,其目标旨在构建一套标准化的微服务解决方案,让架构师、开发者在使用微服务理念构建应用系统的时候,面对各个环节的问题都可以找到相应的组件来处理。 blog.csdn.net/chentian114…

q: springcloud starter自动装配原理
A:www.zhihu.com/question/62…

q:Hystrix了解过吗
a:blog.csdn.net/qq_44112474… blog.csdn.net/qq_38149225…

q. Nacos注册中心原理
a:blog.csdn.net/Zong_0915/a… 具体使用建议看看项目

q:限流和熔断
a:

q:怎么理解git
a:developer.aliyun.com/article/138…

44. 项目部署过嘛
q:linux查看端口的进程
a:

q: linux查看进程
A:

48. 实习项目中怎么做的优化
时长:30min

自我介绍
2. JAVA三大特性,分别介绍一下
3. Java的修饰符,public/private的区别
developer.baidu.com/article/det…

5. 实习的流程
6. mysql里面delet和drop的区别
blog.csdn.net/wuyoudeyuer…

8. 数据库索引类型有哪些
10. 场景题:登录的测试应该怎么测试(只测试用户名和密码)
blog.csdn.net/weixin_4573…

11. 代码题:水仙花数 www.runoob.com/cprogrammin…

q:底层是如何控制长度的?如何控制误差?扩容因子是多少?订单延迟取消队列是如何设计的。 a:

死信队列交换机。

java集合,你了解的集合有哪些?synchronized的底层原理。和reentrantlock的区别

java设计模式拷打。

说说项目中用到了哪些设计模式。

q:spring中哪些功能用到了模板设计模式。 a;blog.csdn.net/qq_34162294…

q:如何实现mysql主从,Mysql主从如何设计调优。MVCC底层。 a: 当时想提项目用到了canal伪装成mysql的子节点来实现mysql和redis的最终一致性。

过于紧张就忘了。如果要实现一个LRU,如何实现?我提到可以直接继承LinkedHashMap.怎么实现的。

我说各个方法分别super基础父类。继续深挖,问put的值值存储在哪?TCP的三次和四次。

JVM 内存结构,垃圾回收。操作系统的内存管理方式。

www.nowcoder.com/feed/main/d…

www.nowcoder.com/discuss/679…

然后就是算法题

image.png www.programmercarl.com/0024.%E4%B8… 学习这部分

q:两两交换链表节点 a:重点交换节点不是单纯交换值 而是真正的节点交换

image.png 比如有个链表是1->2->3->4

那么第一轮递归 next就是2 newNode就是3 然后就2.next = 1 1.next=3 然后就变成了

然后再下一轮 此时 head是3 next就是4 newNode就是null 因为4.next就是null 所以 next.next也就是4.next=3 head.next 也就是3.next=null 此时就是 2->1->3->4 这是第一轮 然后第二轮就是 2->1->4-》3 最终就交换了

翻转链表 解决方法就是双指针

image.png 通过不断的向前移动 然后就让每个节点的指针都反转

image.png 刚开始让前指针指向null

image.png

改学这个

image.png

www.programmercarl.com/0344.%E5%8F… 其实也是双指针 然后交换