2020年底两个月面试了一些互联网java职位

某司:

  1. 如何提高应单率~某个业务问题
  2. MySQL存储引擎及差异,说了myisam的表行数没啥用,因为业务中很少count*并且没有where条件的情况
  3. 连接有心跳,设计一种数据结构管理他们,快速发现超时等,按心跳时间戳排序,堆结构
  4. 讲项目和业务中间穿插各种奇怪的场景问题
  5. 怎么理解ioc,rd定义创建方式以及依赖,生成模板,把创建以及初始化和依赖管理等等动作交给spring,因此将对象的部分控制权交给spring
  6. es的索引结构,是怎么根据一个值快速找到文档的 (倒排索引,没啥说的)
  7. pxc原理,为啥要用,和主从比较的优缺点(pxc高可用,强一致性。DB是业务的最后一道防线(其实最底层的防线是日志),一致性至关重要)
  8. Redis分布式锁的使用,以及它所存在的问题,需不需要规避,哪种场景怎么选(失效问题,误删问题,主从模式下释放或加失败问题)
  9. 为什么要用es,地理点位及评价
  10. 好多记不清了

某某司:

  1. final关键字使用及作用 类 方法 属性 局部变量
  2. 对象分配过程 类加载->逃逸分析->TLAB->eden&from&to->old,另外gc就是由内存分配引起的
  3. cms流程 初始标记(标记出roots)->并发标记(根据roots向下一层继续标记)->预处理(记不清了,应该是处理引用变更dirty card)–>最终标记–>并发清除
  4. 线程池 参数,shutdown 会中断执行中的任务吗?running的是不会被中断的,io阻塞的是runnable状态也不会被中断.
  5. MySQL需不需要主键,为啥需要,为啥一般都是数字 B+树索引结构,叶子要排序,数字比较快没有多余的计算啥的
  6. 事务特性,以及innodb分别怎么保证 借大佬的话:(一致性是目标,需要其他的三个性质保证一致性。隔离性 mvcc, 持久性 redo log, 原子性 redo/undo)
  7. sql优化器 (没答上来,没接触过)
  8. 慢sql优化思路 (explain 查看执行计划,合理的使用索引,利用好联合索引减少回表, join 尽量别要, 无论对将来的大表还是分表, join都不太友好)
  9. 聚簇索引与非聚簇索引 (聚簇主键索引文件即数据文件,非聚簇索引叶子存的是地址)
  10. 为啥是b+树 不是b树和二叉树 (预读,4k&16k,磁盘寻址次数)
  11. Redis分布式锁,为啥用 (互斥场景,判定set是否成功, 不互斥的场景,也可以作标记使用,这种场景也可以不用)
  12. volatile关键字 可见性, 程序执行有序(happen-before规则), 禁止重排序
  13. monitor对象有哪些属性 (只答了 _owner,等待队列两个,其实还有重入次数,还有别的)
  14. 线程的状态有哪几种 (NEW,RUNNABLE,WAITING,TIMED_WAITING,BLOCKED,TERMINATED)
  15. 好多记不清了

某某某司
16. 整场都是我在讲项目以及业务,以及问题及各种解决方案优劣势比较
17. 二面也是
某某某某司
18. MySQL事务及索引相关
19. Redis数据类型 结构 以及删除策略
20. 操作系统,select poll epoll
21.网卡收到的数据是怎么被应用程序感知到的?(中断处理例程)
22. url展示详细过程

某某某某某司:

  1. gc算法 CMS收集原理;
  2. CMS与G1的区别 (处理dirty card不太一样,cms收集老年代,G1收集整个堆,都是分代算法,都依赖基础的标记整理,复制,清除);
  3. 对象分配过程 ;
  4. jvm运行数据区 ;
  5. 堆正常但是进程经常被kill,啥原因; 我会往直接内存(堆外内存)上考虑
  6. jvm参数 ; 最大值,新老比例,eden&from&to比例,gc日志
  7. 线程池参数 拒绝策略 ;拒绝, 不处理,。。。。。
  8. 直接内存使用场景; 多是io使用
  9. guava内存删除策略 ; get的时候会检查所有过期的key
  10. Future在抛异常的时候isDone返回的是true吗,不想用get但是想在任务完成的时候收到通知,怎么办 是true,扩展ListenableFuture
  11. MySQL索引结构 与二叉树对比的优势 (os的预读, io次数即磁盘寻址次数)
  12. rpc调用过程 (几个组成部分 注册中心 producer consumer. consumer动态代理进行网络通信,producer使用wrapper生成代码在优化反射)
  13. Redis集群方式分片 需要虚拟节点作映射
  14. 灵活的分配线程池的两个size (统计,在coreSize之外的次数, 队列里的任务数等,调整coreSize以及maxSize的值,或者 直接走配置中心,手动调整)
  15. 四个Java进程部署在同一台物理机,有一个进程在某段时间进行频繁的磁盘io,导致我的应用响应缓慢。 怎么解决或规避,负载均衡的策略是在哪一端做 (根据响应时间作负载均衡,负载均衡当时答的在客户端做)
  16. mq基本原理 如何保证数据不丢失,有没有重复消息 (在保证消息不丢失的情况下,避免不了要重试,重试就与可能受到重复消息,所以需要业务方幂等)
  17. 啥是缓存击穿,怎么解决.key不过期,数据更新时主动缓存或者拦截key只允许一个线程查db
  18. 活动项目怎么抽象的,补偿是怎么做的; 流程抽象,多活动复用,补偿就是重试,有记录表,数据有状态,每次重试前先检查我方以及依赖方的状态
  19. 分布式锁以及事务问题
  20. 遇到的线上问题,怎么排查 (根据链路追踪找问题节点,如果大批量的RT激增,需要看受影响的业务的公共特性,比如DB,缓存等等多数不是因为机器的活某个服务的问题)
  21. 订单流程的并发怎么处理,状态不一致怎么处理的(标记状态,加后续流程拦截,没有采用简单的加锁,1是影响其他业务性能 2是不确定PXC架构是否可以正常加行锁,目前还在研究中)
  22. 发单策略,轮选
  23. 为啥选择pxc,强一致,高可用。db是业务的最后一道防线,db的一致性至关重要
  24. 如果大量的请求接单,怎么扛并发业务和技术两个角度分别准备怎么做,业务上利用缓冲buffer抢单进池子,大顶堆结构,排序按某些指标打分,达到最大时间限制时,拿出顶部接单,其余的都返回失败

总结:

  1. 八股还是有点用的,明知道会问却不去了解,只能说明你态度或者智商或者处事有问题, 吹嘘八股无用论的,有种面试都说"没用,我不答"
  2. 需要平时注意线上各种问题解决方案,以及更优方案,以及方案确定时的考虑,哪怕不是自己发现的,哪怕不是自己解决的,了解并学到别人的思路那就是自己的
  3. 纯背八股是不太可取的,随便来俩灵活的问题贼容易被问住
  4. 多思考每一道面试题产生的背景,比如新生代:老年代一般是1:2,那么为什么呢,有没有新生代很大老年代很小的场景
  5. 比如Java内存分配过程,为什么需要逃逸分析,为什么要有tlab
  6. 比如线程池大小为什么要那样设置,为什么要选那样的队列
  7. 比如非阻塞io,为什么需要,诞生的背景,进化历程,为什么是select poll epoll这么个发展历程
  8. 不管是简单复杂, 小型或大型, 独立或合作开发的业务或基础组件, 肯定有一些亮点在等着你去发现。
  9. 最后深恶痛绝一下, 看代码先不看有没有啥高端技术, 有没有啥模式。只要没有【注释】就都是 【屎】。

所有

算法题:反转单链表 从第m开始反转n个节点
算法题:自己实现bitmap
算法题:无锁计数器,按key计数
算法题:从一个数字组成的集合中找出出现次数最多的1个或几个数,要求循环尽可能的少,不考虑空间
算法题: 归并排序
算法题: 力扣42
算法题: 找多叉树的公共节点
算法题: 找出二叉树中和为给定值的路径
算法题: 力扣41
算法题: 快速排序
算法题: 手写lru
算法题: 二叉树右视图
算法题: 双端栈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值