字节的面试,你能扛住几道?
C ++, Python 哪一个更快?
读者答:这个我不知道从哪方面说,就是 C + + 的话,它其实能够提供开发者非常多的权限,就是说它能涉及到一些操作系统级别的一些操作,速度应该挺快。然后 Python 实现功能还是蛮快的。
补充:
一般而言,C++更快一些,因为它是一种编译型语言,可以直接编译成机器码,在执行时不需要解释器的介入,因此执行效率较高。
Python是一种解释型语言,需要在运行时通过解释器将代码转换为机器码来执行,因此相对于C++而言,执行效率较低。但是Python具有很多优秀的库和框架,这些库和框架可以帮助开发人员快速开发出高效的应用程序,从而提高开发效率。
编译型语言和解释型语言有没有了解过
读者答:可能 C + + 它提供的更偏机器语言一样,就是只需要进行相关的编译查找就可以。但是 Python 的话它可能是更像脚本语言,所以说在进行执行的时候还需要再进行嗯,一方面的句子语法处理,所以执行速度上会慢一些。
堆内存和栈内存有什么区别
读者答:go里面的堆分配的主要是一些比较大的对象,栈里面的话可能就是分配一些临时的对象,或者是比较小的数据变量。然后如果分配的就是比如说如果申请了一个channel,或者是一个非常大的对象的话,那么它就会从默认的从栈上的空间分配到堆上,因为堆上的这空堆上的空间进行分配之后,它能保留的时间会更长一些,这大概就是栈和堆之间的一个区别。
补充:
1、管理方式不同:栈内存由系统自动分配和释放,而堆内存则需要程序员手动分配和释放。
2、分配方式不同:栈内存是一种连续的内存空间,系统会自动为每个线程分配一定大小的栈空间,函数的参数和局部变量都会在栈上分配内存。而堆内存是不连续的内存空间,程序员需要通过动态分配内存来获得堆内存空间。
3、大小限制不同:栈内存的大小是固定的,并且比堆内存小得多。程序运行时,每个线程的栈空间通常只有几MB到几十MB,而堆内存的大小则取决于系统的剩余内存大小和程序员的动态分配。
4、访问速度不同:栈内存的访问速度比堆内存快得多,因为栈内存是连续的,访问局部变量和函数参数时可以直接读取栈指针的偏移量。而堆内存是不连续的,访问速度较慢。
局部变量是放在堆还是放在栈里面?
读者答:局部变量的话,因为它只在一个函数里面进行相关的生命周期的存在,所以应该是在栈上面的。
链表跟数组有哪一些区别?
读者答:链表的长度是不固定的,对它进行相关的插入或者是删除操作是非常快的。查找需要从头到尾遍历值,效率低。
数组来说的话,数组的话是预先分配了一段固定长度的连续的内存空间,通过数组的下标索引来查找和赋值。但是如果要进行插入删除操作的话,那可能会需要就是将数据中你要插入那个位置之后的所有的数组来进行挪位,才能进行相关的插入操作,所以说它这个插入和删除的操作就会相比链表会麻烦。
补充:
可以提一下数组因为内存地址是连续,可以增加cpu缓存命中率,而链表的内存地址并不是连续的,cpu缓存命中率会很低。
数组怎么动态扩容?
读者答:go 的话它其实提供了一个 slice 这样子的结构,也就是说它底层维护了一个指向数组的指针,然后还维护了一个数组的长度和一个它的空间预存的一个 CAP 的容量值。然后如果将这个当前的数组 space 的大小它是小于 1024 的话,那基本上都是 2 倍的扩容,然后如果超过 1. 2 次的大小的话,基本上是 1. 25 倍的扩容。
协程与我们普通的线程有什么区别?
读者答:协程可以理解为用户级别的线程,所以说在大小方面和调度方面都是比进程要更加的方便和简便的。
补充:
1、调度方式不同:线程是由操作系统调度的,而协程则是由程序员控制的。当一个线程被调度时,它会被操作系统挂起,等待下一次调度。而协程则是由程序员在代码中主动调用的,可以在不同的任务之间切换,而不需要等待操作系统的调度。
2、系统资源占用不同:线程是操作系统管理的实体,它占用系统资源比较大,包括内存、线程栈、CPU 时间片等。而协程则是在用户空间中实现的,不需要操作系统的支持,因此占用的资源比较少。
3、切换成本不同:线程的切换需要保存和恢复线程上下文,需要耗费一定的时间和资源。而协程的切换只需要保存和恢复栈帧等少量数据,因此切换成本比线程低。
4、编程模型不同:线程是面向操作系统的,而协程是面向任务的。线程需要使用操作系统提供的 API 进行线程间通信和同步,而协程则可以使用语言级别的协程库实现协作式多任务。
协程的的通讯有哪些方式?
读者答:不清楚,go 使用时,可能会配合 channel 来进行使用,起一个死循环,监听不同的信号量进行处理。还是说是指那个 GMP 的模型?
补充:
1、共享内存:协程通过共享内存来交换数据,这种方式简单直接,但需要考虑同步和互斥问题,否则会出现数据竞争等问题。
2、消息传递:协程通过消息队列等方式来传递数据,这种方式可以避免数据竞争等问题,但需要考虑消息的发送和接收顺序等问题。
3、信号量:协程通过信号量等方式来实现同步和互斥,这种方式需要考虑好信号量的数量和使用顺序,否则会出现死锁等问题。
常规的多线程开发需要注意哪一些问题?
读者答:场景考虑,你这个线程是不可以就是无限制的创建的吗?而且创建线程是需要开销的,所以一般是会使用线程池这样的方式,先预先创建好一些已经分配好的线程资源,然后有需要用的话就先进行相关的使用,然后这个线程池也负责了一些GC 的处理。
线程池里面大概要开多少的线程数量,这个线程数量的话就会跟你的任务相关。CPU 密集型根据CPU 的核数或者和任务执行的有关的时间来进行这个线程数量的考虑。
读写共享变量会遇到什么问题?
读者答:并发访问
什么是死锁?
读者答:两个或多个进程之间他们都在等待一些资源,然后没有办法完全释放现在已经占有的资源,但是他们需要的资源的话又被其他的进程所占有着,同时这一整个过程中你又没有办法去抢占,造成了一个循环等待的情况(请求保持,互斥,不可剥夺,循环等待)
如何避免出现死锁,怎么排查?
读者答:加锁或者channel,打断点,加日志信息。
补充:
避免死锁:
按照固定的顺序获取锁:按照固定的顺序获取锁可以避免死锁的发生。例如,如果A线程先获取了锁1,再获取锁2,那么B线程就应该先获取锁2,再获取锁1。
设置超时时间:在获取锁的过程中,可以设置超时时间,如果超过一定时间还没有获取到锁,就放弃获取锁,避免因等待锁而导致的死锁。
排查方式:
使用工具:可以使用一些工具来帮助检测和定位死锁问题,例如jstack和jconsole等。
分析日志:可以分析系统日志和线程日志,查看是否有线程在等待某个锁,从而找出可能导致死锁的原因。
代码检查:可以检查代码中是否存在多个线程竞争同一个锁的情况,是否存在锁的嵌套等问题,从而找出可能导致死锁的原因。
密码学和计网
用到过哪些加密算法?
读者答:
Sha256 或者是 MD5 这样子的加密算法。不能还原成原来的数据,用来比较数据是否一致。
对称和非对称的加密算法RSA
补充:
1、对称加密算法:如DES、3DES、AES等,使用相同的秘钥加密和解密数据,加解密速度快,但秘钥管理困难。
2、非对称加密算法:如RSA、ECC等,使用公钥加密数据,私钥解密数据,安全性高,但加解密速度较慢。
3、哈希算法:如MD5、SHA-1、SHA-256等,将任意长度的数据映射成固定长度的哈希值,不可逆、不可篡改,主要用于数据完整性校验。
4、消息认证码(MAC):如HMAC、CMAC等,将消息和秘钥混合处理生成固定长度的认证码,用于防止数据被篡改。
5、数字签名算法:如RSA、DSA等,将消息和私钥混合处理生成数字签名,用于验证消息的来源和完整性。
对称和非对称的加密算法的区别,具体讲讲非对称
读者答:对称的话它是有一个公钥和一个私钥的,然后私钥的话是只有自己持有的,这样子的话那他别人其实不会获取到你的CL,然后你通过一个嗯可信的第三方来进行相关的妙加密。这样子的话别人只需要通过你的公钥来进行一下获取你的公钥来进行你传输内容的加解密就可以,然后来保证这样子的一个数据的安全性。
HTTP和HTTPS有什么区别?
读者答:因为HTTP是明文传输的,然后 HTTPS 的话就是在这样的基础上增加SSL的一些加密的保护,来保证它传输消息的安全性。
补充:
HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
怎么去使用这些加密算法?
读者答:混合使用对称和非对称加密算法,会话密钥是对称的,获取的过程是非对称的。
补充:
通过混合加密的方式可以保证信息的机密性,解决了窃听的风险。
混合加密
HTTPS 采用的是对称加密和非对称加密结合的「混合加密」方式:
在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。
采用「混合加密」的方式的原因:
对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。
TCP 跟 UDP有什么区别?
读者答:TCP 的话它提供了一系列的可靠传输机制来保证它这个传输是可靠的,相较而言的话,那它的传输速度就是慢的,而UDP 的话,它没有做这个可靠的控制,它只是尽力而为,所以说它的传输速度是快的,而且占用的资源也会更小一些。具体使用的话要看不同的那个业务场景来进行相关的使用。
UDP 怎么改造变为可靠传输?
读者答:应用层加序列号和ACK。然后本地会缓存一些自己已经发过的消息,然后同时也要求对方在收到消息之后返回 ACK 来确认这个消息已经收到,如果没有收到 ACK 的话,可能会设置一些定时重传的这样的一些方式,来确保这个消息能够成功的发送到对方。
补充:
还要在应用层实现滑动窗口,实现流量控制,根据接收方的接收能力才发送数据,还有拥塞控制,当网络中有大量数据包同时传输时,会导致网络拥塞,从而影响数据传输的质量和效率。TCP拥塞控制通过动态调整数据传输速率,避免了网络拥塞的发生,从而保证了数据传输的可靠性和高效性。
数据库
MySQL常见的性能优化方式
读者答:索引和分库分表
加了索引之后,插入速度跟那个读的速度有什么区别?
读者答:b +树索引结构它其实跟实际的磁盘结构是比较一致的,使得随机写变成相关的顺序写,插入速度变快的。将所有的数据结数据信息的话都存在叶子节点,能够提高范围查找的速度。
Redis在架构中会起到什么作用?
读者答:当缓存使用的
可以直接存到进程内存,现在为什么要专门做Redis?
读者答:因为Redis快(面试官说不是,因为还存在进程通讯,不如直接内存快;自己去实现一份缓存不一定有Redis好,在分布式架构中Redis能做同步)
相关文章:

字节的面试,你能扛住几道?
C , Python 哪一个更快? 读者答:这个我不知道从哪方面说,就是 C 的话,它其实能够提供开发者非常多的权限,就是说它能涉及到一些操作系统级别的一些操作,速度应该挺快。然后 Python 实现功能还…...

NOPI用法之自定义单元格背景色(3)
NPOI针对office2003使用HSSFWorkbook,对于offce2007及以上使用XSSFWorkbook;今天我以HSSFWorkbook自定义颜色为例说明,Office2007的未研究呢 在NPOI中默认的颜色类是HSSFColor,它内置的颜色有几十种供我们选择,如果不…...

数据分析中常见标准的参考文献
做数据分析过程中,有些分析法方法的标准随便一搜就能找到,不管是口口相传还是默认,大家都按那样的标准做了。日常分析不细究出处还可以,但是正式的学术论文你需要为你写下的每一句话负责,每一个判断标准都应该有参考文…...

辨析 变更请求、批准的变更请求、实施批准的变更请求
变更请求、批准的变更请求、实施批准的变更请求辨析 辨析各种变更请求,不服来辨。 变更请求 定义:对正规受控的文件或计划(范围、进度、成本、政策、过程、计划或程序)等的变更,以反映修改或增加的意见或内容 根据变更请求的工作内容可将变…...
leetcode 561. 数组拆分
题目描述解题思路执行结果 leetcode 561. 数组拆分 题目描述 数组拆分 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 示例 1&am…...
AviatorScript
AviatorScript 是一门高性能、轻量级寄宿于 JVM (包括 Android 平台)之上的脚本语言 特性介绍 支持数字、字符串、正则表达式、布尔值、正则表达式等基本类型,完整支持所有 Java 运算符及优先级等。函数是一等公民,支持闭包和函…...

Oracle跨服务器取数——DBlink 初级使用
前言 一句话解释DBlink是干啥用的 实现跨库访问的可能性. 通过DBlink我们可以在A数据库访问到B数据库中的所有信息,例如我们在加工FDS层表时需要访问ODS层的表,这是就需要跨库访问 一、DBlink的分类 private:用户级别,只有创建该dblink的用户才可以使…...

200人 500人 园区网设计
实验要求: ① 设置合理的STP优先级、边缘端口、Eth-trunk ② 企业内网划分多个vlan ,减少广播域大小,提高网络稳定性 ③ 所有设备,在任何位置都可以telnet远程管理 ④ 出口配置NAT ⑤ 所有用户均为自动获取ip地址 ⑥ 在企业…...

netstat命令解析
一、linux系统中netstat命令的帮助信息 └──╼ $netstat -h usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}netstat [-vWnNcaeol] [<Socket> ...]netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }-r, --route …...

API接口的自我阐述
API(Application Programming Interface),翻译为应用程序接口,是一套定义程序之间如何通讯的接口。API可以实现软件的可重用性、可维护性和互操作性,同时也可以提升软件的性能和安全性。API接口是一个软件系统中的重要…...
Day32内部类
内部类 内部类就是在一个类中定义一个类,(在A类中定义一个B类,B类就被称为内部类) 格式:public class 类名{ 修饰符 class 类名{} } 如:public class Outer{ public class Inner {} } //内部类可以访问外部…...

用户画像系列——HBase 在画像标签过期策略中的应用
一、背景 前面系列文章介绍了用户画像的概念、用户画像的标签加工、用户画像的应用。本篇文章主要介绍一些画像的技术细节,让大家更加详细的了解画像数据存储和处理的逻辑 举个现实中的例子: 例子1:因为疫情原因,上线一个平台(…...

时下热门话题:ChatGPT能否取代人类?
时下热门话题:ChatGPT能否取代人类? 2022年11月底,人工智能对话聊天机器人ChatGPT推出,迅速在社交媒体上走红,短短5天,注册用户数就超过100万。2023年1月末,ChatGPT的月活用户已突破1亿&#x…...
每日刷题记录(十七)
目录 第一题:求12...n解题思路:代码实现: 第二题:两两交换链表中的节点解题思路:代码实现: 第三题:只出现一次的数字 II解题思路:代码实现: 第四题:根据字符串…...

开放原子训练营(第三季)RT-Thread Nano学习营一探究竟
前言 不知道从什么时候起,智能设备开始普及到了我们日常生活的方方面面。下班还未到家,热水器就可以调到合适的温度;上班刚进公司,忘关空调也不再是什么烦恼;诸如夜晚的灯光变换,白昼的窗帘适应等更给我们…...

数据库系统概论(二)关系数据库,SQL概述和数据库安全性
作者的话 前言:总结下知识点,自己偶尔看一看。 目录 一、关系模型概述 1.1关系数据结构及形式化定义 1.1.1域(Domain) 1.1.2笛卡尔积(Cartesian Product) 1.1.3关系(Relation) …...

【VM服务管家】VM4.x算子SDK开发_3.1 环境配置类
目录 3.1.1 环境配置:CSharp算子SDK开发环境配置方法3.1.2 算子封装:使用C封装算子SDK的方法3.1.3 异常中断:算子SDK软件运行报错“托管调试助手”中断的解决方法3.1.4 深度学习:GPU运行深度学习算子引发StackOverFlow异常的方法 …...
Java核心书籍1
1.《Java核心技术》是一本深入浅出的Java编程指南,适合初学者和有一定Java编程基础的读者。这本书的主要作者是Cay S. Horstmann和Gary Cornell,他们都是Java领域的知名专家。这本书的最新版本是第10版,其中涵盖了Java SE 9、10和11的新特性&…...
crontab详细用法 定时任务
使用crontab可以在指定时间执行一个shell脚本或者一系列Linux命令 crontab的使用方法 方法1.使用crontab命令 例如添加一个新的或者编辑已有的,使用: crontab -e就可以进入配置文件.此时配置crontab的执行者是当前登入用户,如果当前有用户是root,需要为其他用户配置,可以使用…...

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局
查看原文>>>基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局 目录 第一章、生态安全评价理论及方法介绍 第二章、平台基础 第三章、数据获取与清洗 第四章、基于USLE模型的土壤侵蚀评价 第五章、基于风蚀修正模型的防风固…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...