快手日常实习二面8.29

基础 & 自我介绍

  1. 介绍一下自己。(项目外卖点评)
  2. 你们导师对你们实习什么态度呢?(本科生没导师)
  3. 那你的实习计划怎么样呢?(六个月,五天)
  4. 开学以后是要回学校去上课吗?还是说还可以继续呢?(继续实习)
  5. 之前有实习经验吗?(无)

Java 基础与 JVM

  1. 讲一讲 Java 中对象的创建过程。(类加载检查->分配内存->初始化->对象头设置->构造函数)
  2. 对象初始化的过程大概是什么样子的?(初始化零值,面试官可能觉得不太够引导我子类父类那一块)
  3. Java 的三大特性是啥?(继承,封装,多态,没细问)
  4. 在对象初始化过程中,遇到继承关系时初始化顺序是怎么样的?
  5. 内存分配的两种方式是?(提到指针碰撞、空闲列表)
  6. 当分配内存空间出现竞争时,解决方案是什么?(TLAB+CAS失败重试)
  7. CAS 有什么问题?(自选开销大+ABA问题)

Spring / 注解(没背过Spring这一块,基本上没答出来)

  1. Spring 注解 和 Lombok 注解有什么异同?

    Spring 注解是运行时处理的,由 Spring 容器解析和反射实现;Lombok 注解是编译时处理的,通过 APT 在编译阶段生成字节码。Spring 注解改变的是运行时的 Bean 行为,Lombok 注解只是减少样板代码。
    
  2. Spring 注解的大致工作原理/机制是什么?写了注解就能生效吗?

    Spring 注解的本质只是标记,它能生效的前提是 Spring 容器扫描并解析注解。容器在启动时会把注解信息转化为 BeanDefinition,并在实例化过程中用反射/AOP来实现依赖注入或增强。如果离开了 Spring 容器,写注解是不会生效的。
    
  3. 在类上写了注解以后,为什么能 work?需要哪些流程?

    写了注解本身没用,Spring 在启动时会扫描这些注解,把它们注册成 BeanDefinition,实例化时通过反射创建对象,再在依赖注入阶段用反射把 @Autowired 的依赖注入进去。对于像 @Transactional 这样的注解,还需要通过 AOP 动态代理来增强方法行为。所以能生效的关键,是 Spring 容器的扫描、解析和后置处理机制。
    

面向对象

  1. 除了 new 关键字,还有哪些方式可以生成对象?(反射、克隆、序列化等)

并发与线程池

  1. 介绍一下 JDK 自带线程池的工作模式。

    线程池是“核心线程优先 → 队列缓存 → 非核心线程补充 → 拒绝策略兜底”。
    
  2. JDK 常见的线程池类型有哪些?

  3. 常见的任务队列有哪些?

  4. 如果项目中需要用多线程,你会如何配置线程池?

    1.线程数配置公式
    
        CPU 密集型任务:核心线程数 = CPU核数 + 1
    
        IO 密集型任务:核心线程数 = CPU核数 * 2(因为 IO 会阻塞,适合多线程并发)。
    
    2.队列大小
    
        有界队列(防止 OOM)。
    
        一般设置成 几百到几千,取决于业务需求。
    
    3.拒绝策略
    
        推荐使用 CallerRunsPolicy(任务交给调用者线程执行,起到限流作用)。
    
    4.线程工厂(ThreadFactory)
    
        自定义线程名,方便排查问题。
    
  5. (场景题)在你项目中,如何使用线程池?

    核心线程数 = CPU * 2
    
    队列大小 = 1000
    
    拒绝策略 = CallerRunsPolicy
    
    线程名 = order-worker-%d
    
  6. 多线程里听过“生产者消费者模型”吗?通信机制是什么?

    1.模型解释:
    生产者:不断产生任务(消息)。
    消费者:不断从队列里取任务处理。
    队列:连接生产者和消费者的中间缓冲区。
    
    2.通信机制:
    
    阻塞队列(BlockingQueue):最常见的方式,比如 LinkedBlockingQueue。
    
    put() 没有空间时阻塞,take() 没有数据时阻塞。
    
    wait/notify(低层次实现)
    
    使用 synchronized + wait/notify 来做线程间通信。
    
    Lock + Condition
    
    使用 AQS 提供的 Condition await/signal。
    

项目 & 技术栈(不太会)

  1. 你在项目中用的 Nginx,是用来解决什么问题的?

    在项目里主要用 Nginx 做 反向代理和负载均衡,保证多实例的服务能均衡处理请求,同时也用它来做静态资源分发,减少后端压力。
    
  2. 什么是反向代理?

    正向代理(Forward Proxy):
    客户端 → 代理服务器 → 访问外部资源。
    举例:VPN、科学上网。客户端知道代理服务器,但目标服务不知道客户端是谁。
    
    反向代理(Reverse Proxy):
    客户端请求 → 代理服务器(Nginx) → 转发到后端服务。
    客户端不知道后端有哪些服务,只和代理交互。
    
  3. Nginx 出现之前一般用什么?

    Apache HTTP Server:老牌 Web 服务器,功能强但性能偏低(基于多进程/多线程模型)
    
  4. Nginx 能承载的 QPS 大概是多少?

    单机 Nginx 在普通服务器上能轻松支撑 几万级 QPS,经过优化和高配硬件环境可以达到 几十万 QPS。这也是它广泛用于高并发场景的原因。
    

登录 & 安全

  1. 你项目中实现的短信登录是怎么做的?
  2. 在真实环境下(如快手)短信登录会考虑哪些点?
  3. 要不要考虑多端登录?
  4. 如果同一账号在不同设备同时登录,如何处理?
  5. 短信登录涉及成本(发短信要钱),如何进行品控/成本控制?
  6. 验证码 5 分钟有效,如果一个账号多人共用怎么处理?

Redis & 缓存

  1. Redis 内存淘汰机制是怎样的?
  2. 淘汰机制具体是如何运行起来的?(定时扫描还是随机取样?)

JVM & GC

  1. JVM 内存结构和垃圾回收是怎么工作的?
  2. 堆内存越来越大时,如何保证 GC 高效?
  3. G1 回收器的工作机制?
  4. 什么情况下对象会直接晋升到老年代?
  5. 跨代引用是怎么处理的?

设计题

  1. 如何设计一个直播排行榜(复合函数将看的时间和刷的金额复合作为score进行排序)?

算法题

实现LRU,直接默写出来了

反问

结果啥时候能出,面试官说一两周吧,估计是排序了,nginx和spring完全没背八股,基本答不上来,登录场景也是说的依托,线程池场景设计说的也是依托,其他基本上都答出来了

#日常实习面试##java##后端#
全部评论
一共几面呀
点赞 回复 分享
发布于 昨天 11:28 黑龙江
佬现在大几啊
点赞 回复 分享
发布于 09-01 09:10 四川
佬过了吗
点赞 回复 分享
发布于 08-30 15:00 湖北
什么岗位呀
点赞 回复 分享
发布于 08-30 13:04 广东

相关推荐

点赞 评论 收藏
分享
头像
08-29 20:59
已编辑
门头沟学院 Java
1.自我介绍2.项目拷打穿插八股:a.你在哪些功能中引入了新的组件?b.ES相比于MySQL好在哪?c.什么场景下用MySQL查找,什么场景下用ES?d.大数据量用ES就一定更好吗?e.你知道在分布式部署下ES可能出现哪些问题吗?f.讲讲RocketMQ在你的项目中的使用逻辑?g.你认为在你的理解中RocketMQ最重要的特性是什么?(顺序性,不丢失,不重复,幂等性,可用性)h.那你知道RocketMQ是怎么实现这些特性的吗?i.Kafka是怎么实现集群高可用,在Leader宕机情况下不会有消息丢失的?j.你平时是怎么学习技术的?k.你这边建立了二级缓存,那请问你是怎么保证二级缓存中数据一致性的?l.那你采用事务可能会带来一些什么问题?m.除了Caffeine还了解哪些本地缓存结构吗?n.知道Caffeine的内部结构吗?3.来讲讲Java中的Error是怎么出现的?会带来什么后果?4.你提到了OOM,请问什么情况下会出现OOM呢?5.那异常呢?Java中有哪些异常类型?6.你认为编译时异常和运行时异常该怎么去处理?什么时候要注意处理这些异常?7.来讲讲锁,对Synchronized了解吗?8.Synchronized是可重入锁吗?是公平锁吗?9.还了解哪些锁呢?10.假如你自己设计了一个并发包,我们可以丢弃Synchronized只用ReentrantLock吗?手撕:实现一个单链表首尾交叉相连,要求必须在原链表上操作例子:1-2-3-4-5-6-7输出:1-7-2-6-3-5-4反问1.改进建议?(对于大二来说挺不错的)[听怕了这句话,逢说必挂]2.几轮?(2-3轮)希望七夕我可以和offer长长久久,牛友也和另一半长长久久🥰
查看23道真题和解析
点赞 评论 收藏
分享
08-30 19:17
门头沟学院 Java
### 25.08.26 浙大网新软件基本没问八股,都是项目拷打1. 项目拷打2. 布隆过滤器3. 分布式AT, XA, TCC 模式4. 如何部署项目到服务器,常用的命令5. 反问环节,主要是做什么业务,还有哪些地方需要加强### 25.08.26 杭州某小厂(20-99人)1. 说说static修饰符,它的使用和其他的有什么区别吗2. volatile作用3. 线程池核心参数,当有一个任务放到线程池时,如何处理,非核心线程在没有任务时如何处理4. redis分布式锁的实现原理5. redisson可重入锁是怎么实现的6. redisson实现的分布式锁是非阻塞还是阻塞的7. mysql索引有哪些以及分别有什么作用,为什么要使用B+树,为什么不使用其他数据结构8. mysql事务隔离级别有哪些,分别解决了什么问题9. 可重复读和幻读有什么区别10. 说一下OOM, 哪些情况下会造成OOM。11. 说一下内存泄露,举例说明内存泄露的场景,除了ThreadLocal还有哪些情况会造成内存泄露吗12. 说一下接口幂等,举例有哪些场景会需要接口幂等13. 说一下责任链模式,举例哪些场景会用到### 25.08.27 杭州小厂(100-499人)(已OC)#### 一面1. 项目拷打(占较大部分时间)2. 说说布隆过滤器3. spring自定义starter的步骤4. mysql索引有哪些5. explain 命令的type字段是什么,有哪些内容,哪个最快和最慢, index走的是什么索引6. mysql有哪些锁7. mysql隔离级别,以及innoDB默认隔离级别是什么8. JVM的内存结构9. 线程池核心参数,当任务来时的处理流程, 核心线程与非核心线程有什么区别#### 二面1. 说一下你觉得哪个项目更难一点2. 介绍一下项目的这个难点,为什么难,怎样解决的3. 对于高并发的这个分布式场景,如何保证缓存和数据库的一致性的同时满足高吞吐量4. 数据库的量有多少,是怎么做处理的5. 对一些AI工具有了解吗6. 反问环节### 25.08.28 恒生电子 (已OC)1. 自我介绍2. 对前端了解多少?(我简历没写有关前端的)3. Vue的双向绑定4. 你现在使用的JDK版本是多少,分别有新特性我回答了8和17, 结果17的新特性确实是忘记了5. 说说字符流和字节流的底层6. 常见集合,有哪些是有序的,TreeSet的底层实现,这些集合都是实现的哪个接口?7. JVM结构8. Stream流主要的操作9. Spring常用的注解有哪些10. 使用过哪些数据库,除了mysql还有其他的吗11. 还有一些也是常见的八股,记不太清了12. 反问环节,主要的业务
面试题刺客退退退
点赞 评论 收藏
分享
评论
3
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务