达闼面试(部分)(未完全解析)

news2024/11/28 22:51:15
  • grpc怎么解决负载均衡问题? Answer by newBing : gRPC提供了多种负载均衡策略,包括轮询、随机、最少连接数等。gRPC客户端可以使用这些策略来选择要连接的服务器。
    k8s环境下部署grpc的几种方案 : 在k8s环境中,可以选择headless service,或者基于Etcd/consul 等外部服务注册中心。这两种方案都是客户端负载均衡。

    • 客户端是只和一个server建立连接,还是和所有server建立连接?相关知识:grpc客户端会和一个server建立HTTP2长连接。
  • 有没有基于Spring做过二次开发?

  • 你对多态是怎么理解的?Java实现多态的原理是什么?即把父类引用指向子类对象,当调用方法时,系统为什么能找到正确的方法?知道虚函数表的作用吗?相关知识:动态绑定:

细究一下Java的动态绑定机制(非常重要) :

运行时绑定也叫动态绑定,它是一种调用对象方法的机制。Java调用对象方法时,一般采用运行时绑定机制。
当调用对象属性时,没有动态绑定机制。

如果方法是private、static、final或者构造器,编译器就可以确定调用那个方法。这是静态绑定
如果不是上述情况,就要使用运行时(动态)绑定。

百度百科:动态绑定 :

动态绑定是多态性得以实现的重要因素,它通过方法表来实现:每个类被加载到虚拟机时,在方法区保存元数据,其中,包括一个叫做方法表(methodtable)的东西,表中记录了这个类定义的方法的指针,每个表项指向一个具体的方法代码。如果这个类重写了父类中的某个方法,则对应表项指向新的代码实现处。

我们假设Fatherft=newSon();ft.say();Son继承自Father,重写了say()。
在代码的编译阶段,编译器通过声明对象的类型(即引用本身的类型)在方法区中该类型的方法表中查找匹配的方法(最佳匹配法:参数类型最接近的被调用),如果有则编译通过。(这里是根据声明的对象类型来查找的,所以此处是查找Father类的方法表,而Father类方法表中是没有子类新增的方法的,所以不能调用。)

ft.say()调用的是Son中的say(),这里就是动态绑定机制的真正体现。
而在实际运行这条语句时,在执行Fatherft=newSon();这一句时创建了一个Son实例对象,然后在ft.say()调用方法时,JVM会把刚才的son对象压入操作数栈,用它来进行调用。
子类中如果重写了父类的方法,则方法表中同名表项会指向子类的方法代码;若无重写,则按照父类中的方法表顺序保存在子类方法表中。

  • 了解Go语言吗

  • 了解linux的进程空间的内存布局吗?Answer by newBing : Linux进程空间的内存布局一般可以粗略地分为以下几大段,从高内存到低内存排列:代码段text、数据段data、bss段、堆、栈和内核数据区(命令行参数和环境变量等)。其中,代码段text通常是只读的,数据段data和bss段通常是可读写的,堆和栈则是动态分配的.

  • volatile的原理。volatile禁止的是谁的指令重排序?Answer by newBing : volatile关键字禁止的是编译器CPU对指令序列进行重排序。Q:内存屏障起的什么作用?相关知识1

内存屏障(memory barrier)是一个CPU指令。基本上,它是这样一条指令: a) 确保一些特定操作执行的顺序; b) 影响一些数据的可见性(可能是某些指令执行后的结果)。

常见的内存屏障有以下几种:

a. 通过 Synchronized关键字包住的代码区域,当线程进入到该区域读取变量信息时,保证读到的是最新的值.这是因为在同步区内对变量的写入操作,在离开同步区时就将当前线程内的数据刷新到内存中,而对数据的读取也不能从缓存读取,只能从内存中读取,保证了数据的读有效性.这就是插入了StoreStore屏障
b. 使用了volatile修饰变量,则对变量的写操作,会插入StoreLoad屏障. 
c. 其余的操作,则需要通过Unsafe这个类来执行.

附:本博的一些相关讨论:
如何理解synchronized的可见性?
volatile的可见性探讨
synchronized、指令重排序、有序性

  • git reset --hard命令恢复到了之前的一次commit,如果查询之前的HEAD?相关知识:git reflog :

2git log shows the current HEAD and its ancestry …
git reflog … is an ordered list of the commits that HEAD has pointed to: it’s undo history for your repo.

3git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作):
在这里插入图片描述


  1. java内存屏障的原理与应用 ↩︎

  2. Stackoverflow : What’s the difference between git reflog and log? ↩︎

  3. git命令log与reflog的比较 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/779697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 动态规划详解

动态规划(Dynamic Programming, DP)是一种解决多阶段决策过程最优化问题的数学方法。动态规划的特点是将原问题分解成多个子问题进行求解,每个子问题只求解一次,并将其结果保存下来,避免重复计算。然后通过组合子问题的…

初识Mybatis,并创建第一个Mybatis项目(详细图文教程)

目录 前言 一、Mybatis是什么? 二、Mybatis的优点 三、创建第一个Mybatis项目 配置Mybatis开发环境 创建数据库 添加框架 配置连接字符串和Mybatis 使用Mybatis操作数据库 测试 前言 Spring 集成了 Mybatis 框架,方便我们更加便捷的使用&#…

机器学习算法基础-覃秉丰 笔记版

文章目录 笔记回归sklearn-LASSOsklearn-一元线性回归sklearn-多元线性回归sklearn-岭回归sklearn-弹性网ElasticNetsklearn-逻辑回归sklearn-非线性逻辑回归标准方程法-岭回归梯度下降法-一元线性回归梯度下降法-多元线性回归梯度下降法-逻辑回归梯度下降法-非线性逻辑回归线性…

在kaggle中用GPU训练模型

文章目录 导入文件数据对于文件目录的访问对于文件的下载对GPU的使用 导入文件数据 参考文章: 使用kaggle GPU跑自己的模型 创建你自己的文件数据 对于数据文件创建notebook进行处理 对于文件目录的访问 ①传入的数据文件放在:/kaggle/input/ 文件…

Form Generator 扩展子表单组件之表单校验(超详细)

一、form-generator是什么?✨ ⭐️ 🌟 form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但目前它提供的组件并不能满足我们在项目中的…

zabbix通过JMX监控tomcat运行情况

第三阶段基础 时 间:2023年7月20日 参加人:全班人员 内 容: zabbix通过JMX监控tomcat 目录 zabbix通过JMX监控tomcat 一、配置java网关 二、修改zabbix服务端配置文件 三、安装tomcat 四、Zabbix-web端配置 zabbix通过JMX监控tomc…

1.react useState使用与常见问题

文章目录 0. 取消批处理合并更新, render 2次1. 合并更新,setCount(异步更新) 3次相当于1次, count值为12. 如何取消批处理合并,让值累加?,改为回调函数写法,内部会依次执行函数, 执行3次 count值为33. 异步更新,获取异步更新的值?useEffect4.利用扩展运算符的形式来解决对象…

基于sklearn计算precision、recall等分类指标

文章目录 一、分类指标函数1.1 precision_score函数1.2 recall_score函数1.3 accuracy_score函数1.4 f1_score函数1.5 precision_recall_curve函数1.6 roc_curve函数1.7 roc_auc_score函数1.8 classification_report函数 二、二分类任务三、多分类任务3.1 Macro Average&#x…

什么是SQL和NoSQL?

目录 认识NoSQL 关系型数据库 非关系型数据库 关系型数据库与非关系型数据库之间的对比 认识NoSQL SQL(Structured Query Language)是一种用于管理关系型数据库的语言。关系型数据库以表格的形式存储数据,表格由行和列组成。SQL语言提供了…

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)

目录 1.获取参数 1.1获取单个参数 1.2获取多个参数 传参注意事项: 2.获取对象 3.后端参数重命名RequestParam 4.获取JSON对象RequestBody 5.从 URL 地址中获取参数 PathVariable 6.上传文件 RequestPart 7.获取Cookie/Session/Header 7.1 获取 Request 和…

uniapp开发app获取当前位置的经纬度

查阅了大量的帖子,发现基本上都不能用,后来发现需要配置一下manifest.json才可以,话不多说上代码 真机运行打印出来的经纬度: 一、配置文件 检查一下manifest.json有没有下面的代码,没有的话就加上 { "permiss…

力扣算法 704 35 34 69 367二分查找

704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 二分查找法 class Solution { public:int search(vecto…

Centos安装GitLab教程

相关网站 官网安装文档可以按照官方文档去安装,但安装过程中可能会出错。所以最好按照本文章的流程去安装,我是边安装边写的文章。 准备工作 在vmware上安装centos,这里要注意下,gitlab比较占用内存,因此要分配至少…

vue 3.0 下载本地pdf文件

使用a标签,把pdf文件放到public文件夹下面 <el-form label-width"160px"> <el-form-item label"使用手册"> <div class"form-item-static"> <a href"/使用手册.pdf" target"_blank" class"link&q…

轻量级Firefox Send替代方案Gokapi

想不到一个域名的变动会影响这么大&#xff0c;访问量出现断崖式下跌。由此可见&#xff0c;平时的访问应该只是一些 RSS 的访问而已。 上面是 Pageviews&#xff0c;下面是 Uniques 今天略有回升 难怪那些大公司要花钱买域名了&#xff0c;不过老苏是个佛系的人&#xff0c;一…

【pom.xml文件】maven中scope标签和optional标签

文章目录 前言一. scope的类型总览二. 详解1.compile&#xff08;默认选项&#xff09;2. test3. runtime4.privided5. system6. import 三.optional 前言 一. scope的类型总览 设置依赖范围 可以对引入的资源进行设置&#xff0c;设置其生效的范围。生效范围主要有以下&#…

mac如何提取视频中的音频?

mac如何提取视频中的音频&#xff1f;我们经常在平时工作的时候&#xff0c;需要将一个视频里面的音频单独提取出来另做他用&#xff0c;例如很多视频自媒体博主就经常使用这种方法来储备音频素材&#xff0c;这个操作在Windows上面比较容易实现&#xff0c;毕竟有相当多的软件…

RT-Thread qemu mps2-an385 bsp 移植制作 :系统运行篇

前言 前面已经让 RT-Thread 进入了 entry 入口函数&#xff0c;并且 调整 链接脚本&#xff0c;自动初始化与 MSH shell 的符号已经预留&#xff0c; 进入了 RT-Thread 的初始化流程 接下来&#xff1a;从 内存管理、系统tick 定时器、适配串口 uart 驱动三个模块入手&#xf…

Vue-组件高级(下)

一、目标 能够知道如何使用ref引用DOM和组件实例能够知道$nextTick的调用时机能够说出keep-alive元素的作用能够掌握插槽的基本用法能够知道如何自定义指令 二、目录 ref引用动态组件插槽自定义指令Table案例 ref引用 1.什么是ref引用 ref用来辅助开发者在不依赖于jQuery的…

基于Android的自助导游系统的设计与实现(论文+源码)_kaic

摘 要 随着人们的生活水平的提高&#xff0c;外出旅游已经成为人们放松休闲的主要活动之 一。传统的旅游方式都是团队组织&#xff0c;这在很大程度上制约了游客游玩的自主性。 本文充分利用无线互联网技术的优点&#xff0c;以智能手机作为移动终端&#xff0c;设计一款自助 …