码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 秋招第二周面试经验


    文章目录

      • 前言
      • 第一家一面
        • 聊一下你上次实习的收获在哪些方面,参与实际的开发了吗?
        • 你对SpringCloud组件的认知是怎样的?
        • 你有了解过RBAC吗
        • SpringAOP和拦截器过滤器的区别?
        • 你项目中对token怎么处理的?
        • MySQL常用的聚合函数
        • hash和B树的区别
      • 第二家
        • 先简单介绍一下你实习的这个项目
        • 用户是怎样区分的
        • 工作流程是怎么样的
        • 设计过哪些数据库的表
        • 能具体说一下是些什么配置吗
        • 项目中最大的收获在哪几个方面
        • Mybatis、MybatisPlus、Hibernate区别
        • 你们公司有一些什么设计开发规范
        • 客户端系统的部署和打包的过程
        • 项目中怎么具体分工
        • 你们小组分的哪一部分
        • 接口间有交互怎么处理
        • SpringCloud你接触到比较多的是哪些组件
        • 你们项目中权限认证和网关怎么相结合
        • 简单讲讲ES
        • 倒排索引你了解吗
        • 谈谈你对Spring、SpringMVC和SpringBoot的理解
        • Spring生态中最重要的概念是什么呢
        • 谈谈SQL调优
        • 索引为什么会失效
        • 团队开发遇到了些什么问题,你是怎么去解决的
        • 职业规划
        • 毕设是怎么样的安排
      • 第一家架构师面(二面)
        • 实习项目中负责哪些内容
        • 你除了Hibernate还用过其他的ORM框架吗
        • 你是怎样去做这个用户的设计的
        • Nacos如何检测服务是否可用
        • 你能说一下JMM内存模型吗
        • 你能聊聊Redis分布式锁是怎么实现的吗
        • 你怎样从接收需求到上线
        • 你怎么跟前端协作的
        • 职业规划
      • 上海某家电话面
        • MyBatis和MyBatis-plus的区别
        • 你知道年轻代,老年代和元空间吗
        • 你能说说一个类从加载到销毁的过程吗
        • 讲讲你对微服务的理解
        • 嘴巴写基本的SQL
        • 我看你熟悉多线程,你知道线程的含义吗
        • kafka的基本架构

    前言

    秋招开始接到面试的第二周,真的很感谢在这个寒冬这些公司愿意给我机会,当然自己面试感觉也确实是越来越好了,首先我觉得我们需要注意答题的思路:先听清楚想好再回答,先整体再局部,注意自己回答的这个思路,可以水平拓展,但不要扯太远了,尤其是针对八股文的那种,还是建议尽量把深度往下挖,感觉最近的面试很舒服。有些公司面试就像是在技术交流,很喜欢这种技术氛围。
    再就是一些HR面,要尽量地展现自己的综合能力,也别怕说错话,把自己的观点尽量简短表述清楚,注意条理,我强烈建议大家可以考虑这样说话:第一,第二.... 这样自己表达的时候潜意识里面也会有更多的逻辑在里面。注意你是来推销自己的,是你觉得你能行,可以胜任这个岗位,我们都是一块宝玉,公司得到了是它的幸运,然后我们也很感谢得到一个锻炼和发展的平台并会继续努力下去,为公司创造更多的收益。然后本文有一些问题没有完全解答,因为博主有些文章已经写了相关内容,这里就不再过多赘述了,这里发上周面试相关知识点链接:上周面试经验,觉得不错的可以收藏一下,这种环境下接到面试确实不太容易,另外可以关注博主一波,后续也会经常更新一些技术博文。
    想进秋招群一起学习交流的友友可以评论或私聊博主,大家一起加油。

    第一家一面

    聊一下你上次实习的收获在哪些方面,参与实际的开发了吗?

    这个阶段最主要的不是关注最新的技术栈,而是要知道企业级项目的流程,具备企业级开发的能力。

    img

    你对SpringCloud组件的认知是怎样的?

    SpringCloud:是一套目前完整的微服务框架,它是一系列框架的有序集合。它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简易易懂、易部署和易维护的分布式系统开发工具包。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署

    其中一些具体组件

    1. Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。Nacos主要提供以下功能:服务发现和服务健康监测、动态配置服务(维护的时候)。在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段

      如果微服务架构中没有使用统一配置中心时,所存在的问题:

      1. 配置文件分散在各个项目里,不方便维护
      2. 配置内容安全与权限
      3. 更新配置后,项目需要重启

      Nacos配置中心:系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动

    2. Gateway:负载均衡、熔断降级、统一鉴权、请求过滤、路径重写、限流保护。面向服务的路由,如果写的是IP地址的话相当于地址写死了,无法做到负载均衡,应该把网关工程注册到Nacos注册中心,通过服务名去访问不同微服务。网关限流有这么一些算法:

      1. 令牌桶算法:所有请求在处理之前都需要拿到一个可用的令牌才会被处理,根据限流大小,设置按照一定的速率往桶里添加令牌;桶设置最大的放置令牌限制,当桶满时,新添加的令牌就会被丢弃或者拒绝;请求到达后首先要获取令牌桶中的令牌,拿着令牌才可以进行其他的业务逻辑,处理完业务逻辑之后,将令牌直接删除;令牌桶有最低限额,当桶中的令牌达到最低限额的时候,请求处理完之后将不会删除令牌,以此保证足够的限流。guaua和redis客户端就有其实现
      2. 漏桶算法:水(请求)从上方倒入水桶内,从水桶下方流出(被处理);来不及流出的水存在水桶中(缓冲),以固定速率流出;水桶满后水溢出(丢弃);这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃
      3. 两种算法的区别:两者主要区别在于“漏桶算法”能够强行限制数据的传输速率,而"令牌桶算法"在能够限制数据的平均传输数据外,还允许某种程度的突发传输。在"令牌桶算法"中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,所以它适合于具有突发特性的流量
    3. Sentinel:是面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从**限流、流量整形、熔断降级、**系统负载保护等多个维度来帮助您保障微服务的稳定性。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException) 。流量控制有以下几个角度:

      1. 资源的调用关系,例如资源的调用链路,资源和资源之间的关系
      2. 运行指标,例如 QPS、线程数等
      3. 控制的效果,例如**直接限流(快速失败)、冷启动(Warm Up)、匀速排队(排队等待)**等Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果
      4. Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果
    4. OpenFeign:微服务之间的相互调用,相较于Feign它支持SpringMVC的注解,如@RequestMapping等等。OpenFeign的FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理方式产生实现类,实现类中做负载均衡并调用其他服务

    5. Zipkin:链路追踪: 能展示完整调用链的耗时。还能展示各个部分调用的耗时

    你有了解过RBAC吗

    RBAC(基于角色的权限控制 role base access control)是一种设计模式,是用来设计和管理权限相关数据的一种模型。这种表结构大致如下在这里插入图片描述

    SpringAOP和拦截器过滤器的区别?

    AOP(Aspect-Oriented Programming:⾯向切⾯编程)能够将那些与业务⽆关,却为业务模块所共同调⽤的逻辑或责任(例如事务处理、⽇志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。 Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接⼝,那么Spring AOP会使⽤JDK Proxy,去创建代理对象,⽽对于没有实现接⼝的对象,使⽤Cglib ,这时候Spring AOP会使⽤ Cglib ⽣成⼀个被代理对象的子类来作为代理。

    过滤器拦截器都体现了AOP的编程思想

    1. 过滤器的配置比较简单,直接实现Filter接口即可,也可以通过@WebFilter注解实现对特定URLl拦截,看到Filter接口中定义了三个方法:

      1. init() :该方法在容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。注意:这个方法必须执行成功,否则过滤器会不起作用
      2. doFilter() :容器中的每一次请求都会调用该方法, FilterChain 用来调用下一个过滤器 Filter
      3. destroy(): 当容器销毁 过滤器实例时调用该方法,一般在方法中销毁或关闭资源,在过滤器 Filter 的整个生命周期也只会被调用一次
    2. 拦截器(Interceptor):拦截器它是链式调用,一个应用中可以同时存在多个拦截器Interceptor, 一个请求也可以触发多个拦截器 ,而每个拦截器的调用会依据它的声明顺序依次执行。 将自定义好的拦截器处理类进行注册,并通过**addPathPatterns、excludePathPatterns**等属性设置需要拦截或需要排除的 URL。

      首先编写一个简单的拦截器处理类,请求的拦截是通过HandlerInterceptor 来实现,看到HandlerInterceptor 接口中也定义了三个方法。

      1. preHandle() :这个方法将在请求处理之前进行调用。注意:如果该方法的返回值为false ,将视为当前请求结束,不仅自身的拦截器会失效,还会导致其他的拦截器也不再执行
      2. postHandle():只有在 preHandle() 方法返回值为
  • 相关阅读:
    Springboot毕设项目码头船只出行及配套货柜码放管理4ab7d(java+VUE+Mybatis+Maven+Mysql)
    接口自动化测试实战之接口概念、项目简介及测试流程问答详解
    【Spring】依赖注入(array , list ,map)
    github token个人令牌
    2023-2028年中国高纯度有机金属市场发展分析及前景投资预测报告
    【RabbitMQ】RabbitMQ 集群的搭建 —— 基于 Docker 搭建 RabbitMQ 的普通集群,镜像集群以及仲裁队列
    电脑设置在哪里?5招快速进入设置!
    VUE3 之 插件的使用 - 这个系列的教程通俗易懂,适合自学
    【一等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「NUFE」解题思路
    基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序
  • 原文地址:https://blog.csdn.net/qq_57469718/article/details/127043941
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号