半年多后,我又来发面试篇了

半月内面试的几家二线公司体验

  • 首先说明楼主两年多经验,面试的话,对标的是阿里的p5-p6左右,大概就是中高级开发的样子,半个月来,面试了大概几家大家可能知道的公司吧,因为楼主对自己自身的能力比较有数(比较菜),所以本次面试没有针对非常知名的公司,大概有以下几家公司:
  1. 大搜车
  2. 盒马
  3. 菜鸟网络
  4. 玩物得志

面试题汇总

mysql相关

  • mysql索引了解不?常用的索引有几种,使用场景,优缺点?什么情况下索引失效?
    回答的话,几种存储引擎对应的默认索引,巴拉巴拉说一堆,然后各种索引的原理等等,下面会列出自己准备期间自身的准备的知识点,平时也可以拿来扫盲,针对性的学习==
  • sql优化过吗?有哪些步骤?
  • mysql分库分表,按照什么规则分?
  • 一条sql在mysql的执行顺序?
    连接器–优化器–执行器==

暂时就想到这几个,可能后面会补充。

jvm

  • 什么时候jvm进行full gc? 主要思路在触发young gc的前后,有各种情况下会导致。

  • 空间担保策略知道吗?类加载过程、双亲委派机制 ==

  • jvm常见的参数用过嘛?进行过哪些调优?这里提供一份jvm初阶的参数调优

-Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:PermSize=256M -XX:MaxPermSize=256M -
XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:PretenureSizeThreshold=1M -XX:+UseParNewGC -
XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92 -XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0

其中各个参数所代表的的意思,可以去官方文档查,总的来说,jvm调优,千人千面,没有一个绝对好用的调优参数,也没有所谓的银弹,针对不同规模的系统,配置,请求量==,需要配置不同的参数。
总体思路就是,新生代gc后,尽量保持存活的对象还在新生代,而不会直接进入老年代,然后大对象或者需要持续引用的对象,直接进入老年代。

  • 线上的jvm参数看过嘛?线上用的什么垃圾回收器? 用过G1嘛?G1原理
    大概思路:线上默认使用的cms+parNew,cms原理说一下,4个阶段。然后G1在cms上做了哪些提升,原理是啥,最大的特点:用户可以配置期望的stw时间。
  • 线上发现系统在疯狂进行full gc,cpu满占,该怎么解决?
  1. 首先突然进行疯狂full gc,说明肯定是近期上线的代码出了问题,这时候第一步就是找到之前稳定的版本,先进行回滚。保证系统稳定运行。
  2. 查看各种日志监控,定位问题代码,修复上线,没有监控日志的话,根据jdk提供的小工具,jvmvisual == 也很好用。
  3. 定位不到,只能dump下堆栈信息,查看,但是绝不是第一步就dump,因为可能需要dump的数据很多,可能需要好几个小时才能dump下来,所以第一步是解决线上的问题,先进行回滚。
redis
  • 你们公司的redis架构
  • 了解redis的常用的数据结构嘛?实际使用过哪些,举个真实案例? 例子:使用set+map<id, obj>实现一个商家排行榜的功能
  • 了解redis集群架构嘛?主从+哨兵
  • redis集群之间的replication原理? 答题思路:从slave node启动开始,到跟master建立连接,然后第一次数据的全量复制,后续的增量复制
  • redis持久化怎么做?rdb跟aof两种,这里可以说的很多,两种原理,优缺点,然后生产环境建议同时开启,master节点一定要做持久化==此处省略1w字,有需要的话,私聊将这‘1w’字发你。
  • redis主从复制原理,断点续传、无磁盘化复制? 省略1w字,后面两个比较偏,可以自行百度

springboot

  • springboot启动流程 可以说的很多,就从入口类run方法说起,做了哪些事,加载配置、初始化环境上下文、加载监听器==
  • springboot自动装配 ? 很好理解,百度一下就知道了
  • springboot starter了解吗?
  • springboot实现动态数据源 ?思路: 主要是一个DynamicSource
  • spring循环依赖?通过三级缓存去讲

事务

  • 你们公司怎么解决分布式事务问题?用的框架还是什么? 可以说说没用框架之前怎么解决的,消息+本地时间表+定时任务。然后说现在使用的那个框架,比如seata,相应的2pc、3pc原理,优缺点== 最好结合公司真实的场景说,比较有说服力
  • 让你设计一个分布式事务解决方案,怎么设计?说大体思路,2pc的原理

并发编程(必问)

  • AQS了解多少
  • 让你基于AQS实现一个高并发的框架,怎么做
  • 多个线程依次顺序输出怎么做? condition
  • reentranlock跟synchronize区别?最好讲到源码级别,建议读一读reentranlock源码,加深对并发编程的理解

项目(重中之重)

  • 一定会问的,而且后面几轮基本都是会基于项目问
  • 项目架构图,画一下
  • 你负责哪块
  • 讲讲项目里比较有挑战性的
  • 用了哪些设计模式,结合实际场景
  • 项目问题很多,主要结合上述的问题进行提问

自身准备

  • 一定要有自己的加分项,也就是亮点,一两个点需要回答的很深入,回答到面试官一顿可以可以的那种。可以结合自己情况,然后回答的过程中,要将问题引导到自己的擅长的地方
  • 你要知道,一场面试,大概就1小时左右,你擅长的点回答的越深入,越多,那么你不擅长的其他点,被问到的概率就越低。而且几个点回答的很满意,其他问题有瑕疵,也没什么问题,主要是给面试官留下印象,这个小伙子,redis底层了解的比我还多,还深入,可以可以。这个小伙子jvm底层原理都了解,可以可以。这个小伙子spring源码吃透了,可以可以。然后offer就会向你招手。
  • 其实面试需要注意的点很多很多,我这边只列出了部分,后续可能会更新,会根据自身准备的点,向下深入扩展。
  • 最后,各种意外吧,楼主应该会入职盒马,毕竟⏫50% + 全额公积金还是香的。
  • 写的也不好,欢迎大家指导批评哈
  • 下面附上我自己准备的一些知识点大纲,希望对你有帮助。
    知识要点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值