• 右岸物联面经


    简单三分钟自我介绍

    自我介绍这里一笔带过,给对面介绍自己内在 + 外在 + 校园经历 + 校园项目 + 意向岗位

    技术面

    1. Java基础篇

    1.1 Object你知道哪些方法?

    我就回答了自己常用的 waitnotifynotifyAll 这三个方法,其他自己不怎么使用,就跟技术官说抱歉,其他不怎么使用,就回答不上来,面试官也不停留在这个问题上,直接带到下一个话题。

    所以这里总结下,Object其实还有一个 clone()方法,这个回答不上了其实真不应该,当前想不起来,还有一个获取类信息getClass(),可以做映射的东西。

    1.2 你了解过哪些list 类型吗

    嗯,有两种,一种是 数组,一种是链表,即ArrayListLinkedList

    1.3 这两种怎么选择使用?

    一般的话,如果读操作大于增删改的话,使用数组效率要比链表的好,而如果要频繁修改操作,那么使用链表更好一点

    所谓层层递进,就在这里了

    1.4 那为什么这么说?

    呃,因为数组如果你要增加一个元素的话,比如举例,你有十个元素,那么你要在0号下标增加一个元素,那么你得把后面10个元素整体向后挪到一位,这里我还用手势比划了一下,面试官点头,然后示意我继续,我就说链表的话,只需要修改一下指针就可以了,不用对整体移动,其实这里应该回调内存的连续跟分散会更好一点,因为数组是开辟的连续内存空间,而链表不需要,它是零散的,所以链表读要使用指针,自然而然数组读效率更高。

    2. Spring 篇

    2.1 Spring 是干什么用到?

    Spring可以方便地给我们管理创建、获取和kill对象,不需要我们去额外做这一份工作。

    2.2 了解过 IOC吗?

    IOC控制反转的意思,在Spring 容器中,创建对象的工作不再由我们来负责,而是交由 Spring 容器去管理各个对象的生命周期。

    2.3 说一说 Spring 容器管理对象生命周期有什么用?

    由于 Spring容器默认使用的是 Single单例创建对象,这样各个线程对同一个对象是共享的,就可以做到多个用户请求访问是拿的是同一个实例,不用总去创建对象,导致频繁的 GC垃圾回收。

    2.4 说一说 Spring 中容器它的创建实例的作用域

    Spring容器中,有一个属性 scope,就是一个作用域,它可以指明创建对象是采用单例还是其他方式

    单例的话多个线程下是共享实例的,当时只想到 Request,但这个不是线程级别的,没回答上来,没想到 Prototype(原型),技术官帮我解围了,说知道我知道想说什么,就是说不出来哈哈。

    Prototype 它是一个原型,在多个线程中的创建的单例是互不干扰的,也就是生命周期的处于线程。

    当然还有其他,因为不怎么使用,所以就没有怎么说。

    MySQL

    MySQL 你了解过哪些引擎

    嗯?这个我了解过两个,INNODBMyisam

    这两个是有什么区别?

    我就说了第一个默认会使用 行锁,Myisam 使用的是表锁

    面试官继续追问,为什么?怎么判断的?

    这个我真不知道该怎么回答,我就瞎扯了锁升级,就说 INNODB因为默认使用行锁,但是如果因为没有索引优化或者语句优化等问题,可能会出现锁升级现象,这是 Myisam 没有的。

    面试官一头雾水,但没有反驳,好,继续下个问题。

    事务有了解吗?

    我说有有,这就来劲了,就说INODB 有事务,但Myisam 没有事务这说法,现在才明白面试官说这两个引擎的区别原来在这里。

    面试官没有为难,知道问的差不多了,就开始手撕 SQL

    口述SQL

    给你一个表,这个表有三个字段,一个是学生 id,一个是课程名 cname,一个是课程成绩 cscore

    要求:如果有三门课程,要求找出学生的总成绩大于270,并且返回学生id和总成绩

    纳尼,第一个想法就是想着连表查询,当时觉得没戏了,就很挣扎

    口述:就是通过三张表自然关联,关联三门成绩,然后关联条件是学生id,where 是三门成绩之和大于270

    面试官觉得有问题,这种做法不通用,要我再想想其他方法

    想了两分钟,没有思绪,给我个提示:可以使用 group by

    分组?那就简单了,我就直接口述了,说可以先分组,然后在每个分组里面使用聚合函数sum,将总成绩这个条件满足270的查询出来

    当时很紧张,怕错了,面试官一脸微笑的说,是的,思路是对的,你可以用在纸上用笔写下来吗?

    他知道我口述可以,但还是不相信我动手能力,瞧不起了,可能之前用那个关联的SQL 手写SQL,出现了一点问题,但在他提出问题的时候,我立马说我可以修改下sql吗,改了再给他看了下,可能就是因为这个原因,自己不仔细写,给自己埋坑,让面试官对我有了质疑

    于是这次我就好好捋了捋思绪,面试官看我迟迟未动笔,说不用紧张,慢慢想,当然我肯定不这么想,当时已经有想法了,只是怕又写错了SQL,因为当时已经有一个月没刷 力扣 SQL题型了,想了两分钟左右,写了出来

    select sc.sid, sum(sc.score) as sum_score
    from SC sc
    group by sc.sid
    having on sum(sc.score) > 270
    

    就这样,面试官比较满意,就问我为什么当时没想出来,我就说当时他说给三科成绩,很容易就让人想到用联表

    到这里 SQL 也没继续写了

  • 相关阅读:
    如何在Vue中实现拖拽上传文件
    kubeadm初始化小备忘
    5.0、C语言——函数
    JAVA计算机毕业设计扶贫信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    户外运动耳机推荐、十大户外运动耳机品牌推荐排名清单
    git仓库清理
    在有序数组中插入一个数
    二十、java版 SpringCloud分布式微服务云架构之Java 异常处理
    【Push Kit】模拟服务端发送消息至客户端,测试消息发送功能(华为推送服务)
    phmap 学习和思考
  • 原文地址:https://blog.csdn.net/F15217283411/article/details/127041097