热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

202003网易面经

文章目录1.一面,电话,耗时42分钟2.二面,视频,耗时35分钟1.一面,电话,耗时42分钟Fl


文章目录

    • 1. 一面,电话,耗时42分钟
    • 2. 二面,视频,耗时35分钟


1. 一面,电话,耗时42分钟


  • Flink反压问题?

  • Flink中checkpoint与savepoint的区别?

  • kafka中LogManager模块的实现?

  • Kafka中topic partition的leader选举是怎么做的?

  • BIO、NIO、AIO的区别?

  • Netty中的各个模块组成部分?为什么boss group只需要设置为1?

  • 为什么不使用JDK自带的NIO,它有一个什么臭名昭著的bug吗?
    JDK原生也有一套网络应用程序API,但存在一系列问题:
    (1) NIO 的类库和 API 繁杂,使用麻烦。你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。
    (2) 需要具备其他的额外技能做铺垫。例如熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的 NIO 程序。
    (3) 可靠性能力补齐,开发工作量和难度都非常大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等等。
    (4) NIO 编程的特点是功能开发相对容易,但是可靠性能力补齐工作量和难度都非常大。
    (5) JDK NIO 的 Bug。例如臭名昭著的 Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU 100%。
    Netty的特点:
    (1) 设计优雅,适用于各种传输类型的统一 API 阻塞和非阻塞 Socket;基于灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制的线程模型 - 单线程,一个或多个线程池;真正的无连接数据报套接字支持(自 3.1 起)。
    (2) 使用方便,详细记录的 Javadoc,用户指南和示例;没有其他依赖项,JDK 5(Netty 3.x)或 6(Netty 4.x)就足够了。
    (3) 高性能,吞吐量更高,延迟更低;减少资源消耗;最小化不必要的内存复制。
    (4) 安全,完整的 SSL/TLS 和 StartTLS 支持。
    (5) 社区活跃,不断更新,社区活跃,版本迭代周期短,发现的 Bug 可以被及时修复,同时,更多的新功能会被加入。

  • Netty中的零拷贝是怎么做的?
    (1) Netty的接收和发送ByteBuffer采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。
    (2) Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer。
    (3) Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题。
    FileChannel.transferTo

  • 如果Netty线程的处理是非常耗时的IO,应该采用什么方案解决?

  • Full GC的场景,是如何定位问题的?

  • 用过哪些锁,Synchronized 和 Lock,底层的实现原理分别是什么?

  • JDK的线程池有用过吗?分别有哪些?

  • Flink中任务的提交也是用per job吗?也是基于Flink 1.9版本吗?

  • Flink中的kerberos认证是怎么做的,HDFS的票据失效问题如何解决?

  • Flink的内存管理是怎么做的?

  • 实时接入写入到HDFS这种目的端,怎么保证Exactly-Once?为什么不直接用Flink,Flink中的端到端Exactly-Once不是可以保证吗?

  • Flink监控的指标有哪些?为什么不直接用Flink Web UI自带的?

  • MySQL事务隔离的级别?

  • 在线编程题

// Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.// Find all the elements of [1, n] inclusive that do not appear in this array.// Input:
// [4,3,2,7,8,2,3,1]// Output:
// [5,6]
import java.util.HashSet;
public class ShowMeBug {public static void main(String[] args) {int[] nums &#61; {4,3,2,7,8,2,3,1};findDisappearedNumbers(nums);}public static List<Integer> findDisappearedNumbers(int[] nums) {int max &#61; nums[0];Set<Integer> noDuplicate &#61; new HashSet<>();for(int i&#61;0;i<nums;i&#43;&#43;){noDuplicate.put(nums[i]);if(nums[i] >&#61; max){max &#61; nums[i];}}for(int i&#61;1;i<&#61;max;i&#43;&#43;){if(!noDuplicate.contains(i)){System.out.println(i);}}}}
}

2. 二面&#xff0c;视频&#xff0c;耗时35分钟


  • netty编解码器的原理&#xff0c;如何避免粘包和拆包&#xff1f;

  • netty网关接收传感器数据&#xff0c;架构是怎么设计的&#xff1f;
    一种传感器一种应用协议&#xff0c;对应netty网关的一个端口&#xff0c;netty server使用LVS做负载均衡。

  • 讲一下netty的原理&#xff0c;为什么会比较高效&#xff1f;
    (1) 高性能之处来自于其I/O模型和线程处理模型
    (2) 零拷贝
    (3) 内存池
    (4) 高性能的序列化框架&#xff0c;protobuf&#xff0c;也是Thrift的压缩二进制编解码框架
    (5) 灵活的TCP参数配置能力

  • HBase不同版本的控制&#xff0c;比如各自依赖的common-io的版本都不同&#xff0c;如何解决冲突&#xff0c;shaded技术&#xff1f;

  • 查询服务有没有出现过异常、抖动等&#xff1f;网关服务呢&#xff1f;
    rest服务使用状态码&#xff0c;尽量不要直接返回500错误&#xff0c;友好的错误提示。

  • 线程池是怎么用的&#xff1f;参数的含义&#xff1f;参数配置的经验值&#xff1f;

  • Flink的checkpoint机制&#xff1f;恢复的流程是怎样的&#xff1f;描述一个场景&#xff1f;

  • kerberos认证的流程是怎么样的&#xff1f;klist、kinit、principal等概念&#xff1f;依赖于哪些组件&#xff1f;怎么管理keytab文件&#xff1f;Flink和HBase不是同一个集群的情况&#xff1f;

  • 实时计算项目上的技术上的难点&#xff1f;

  • java的泛型的理解&#xff1f;
    泛型类型在逻辑上可以看成是多个不同的类型&#xff0c;实际上都是相同的基本类型。
    泛型的三种使用方式&#xff1a;泛型类、泛型接口、泛型方法

  • 多线程同步的方案&#xff1f;就是问CountDownLatch、CyclicBarrier等的应用场景&#xff1f;

  • Synchronized 和 Lock 之间的区别&#xff1f;try和finally里都有return&#xff0c;到底是return谁的&#xff1f;

  • 了解哪些Map&#xff1f;什么叫线程安全&#xff1f;并发写会有什么问题&#xff1f;

  • 在遍历一个ArrayList&#xff0c;如果此时向其中add一个数据会发生什么&#xff1f;
    使用iterator迭代器遍历&#xff0c;否则会出现ConcurrentModificationException

  • 知道哪些排序算法&#xff1f;

  • volatile关键字的作用&#xff1f;什么叫指令重排&#xff1f;

  • 做过哪些JVM参数调优&#xff1f;

  • Calcite 现在支持的sql类型有哪些&#xff1f;

  • MySQL中的索引类型有哪些&#xff1f;


推荐阅读
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
author-avatar
陈大也也_384
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有