面试题总结

运维开发面试题整理 Python的可变与不可变数据类型 可变数据类型:列表list和字典dict;不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。 不可变数据类型分析 python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象, 阅读详情

1.java中出现了异常的线程需要如何排查?

在线程运行的过程中,出现了某些线程异常处理方法:

  • top命令 可以动态查看进程的ID。然后针对具体的异常java进程,使用top -H -p 进程号,即可动态的查看具体的进程对应所在的每个线程的动态变化情况,利用jstack命令查看相关的线程信息进行排查。
  • ps命令 可以使用ps -aux 来查看具体的每个进程的实际应用占用资源情况。结合awk、sort 可以快速定位。实例:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 。

2. hashmap多线程下出现的问题?

1.当多线程同时put值的时候,若发生hash碰撞,可能多个元素都落在链表的头部,从而造成元素覆盖(hashcode相同而eques值不同的元素)

例如:线程A put一个元素a ,线程B put一个元素b,a,b 发生hansh碰撞,本应该在map是链表的形式存在,但是可能线程A和线程B同时put到链表的第一个位置,从而后来者覆盖前者元素造成元素丢失。

2.put 造成链表形成闭环,get的时候出现死循环(jdk8已经解决该问题),该情况是出现在多线线程操作map扩容时会发生。

3.hashmap初始化的容量不为2的n次方会怎样?

容量为2的n次方的优点:

  • 长度是2的n次幂是 取模可以转换成按位与运算 效率更高
  • 扩容的时候 这样的长度设置更高效 扩展也总是2次幂的 这样的话 元素位置要么在原位 要么移动2次幂

如果初始化不为2的n次方,会如何?
如不是2的N次方那么在第一次put 元素的时候也会自动把容量设置为比传入参数大的最小的2的N次方,并不是你指定的这个值。

static final int tableSizeFor(int cap) {
    
    int n = cap - 1;
    //移位运算
    n |= n >>> 1;
    n |= n >>> 2;
    n |= n >>> 4;
    n |= n >>> 8;
    n |= n >>> 16;
    return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}

4. 数据库大表不停机如何加字段

  • 直接添加字段:如果该表读写不频繁,数据量较小(通常1G以内或百万以内),直接添加即可
  • 使用pt_osc工具添加:如果表较大 但是读写不是太大,且想尽量不影响原表的读写,可以用percona tools进行添加,相当于新建一张添加了字段的新表,再将原表的数据复制到新表中,复制历史数据期间的数据也会同步至新表,最后删除原表,将新表重命名为原表表名,实现字段添加 。
  • 先在从库添加 再进行主从切换: 如果一张表数据量大且是热表(读写特别频繁),则可以考虑先在从库添加,再进行主从切换,切换后再将其他几个节点上添加字段

5.ArrayList的扩容机制

ArrayList的底层是一个动态数组,ArrayList首先会对传进来的初始化参数initalCapacity进行判断

  • 如果参数等于0,则将数组初始化为一个空数组,
  • 如果不等于0,将数组初始化为一个容量为10的数组。

当数组的大小大于初始容量的时候(比如初始为10,当添加第11个元素的时候),就会进行扩容,新的容量为旧的容量的1.5倍。

6. jvm频繁full gc怎么处理,如何调参?

GC两种类型:一种是部分收集(Partial GC),一种是整堆回收(Full GC)。

(1)部分收集:

  • 新生代收集(Minor GC / Young GC): 只是新生代(Eden \ S0,S1)的垃圾收集
  • 老年代收集(Major GC / Old GC): 只是老年代的垃圾收集
  • 混合收集(Mixed GC): 收集整个新生代以及部分老年代的垃圾收集

(2)整堆收集(Full GC): 收集整个Java堆和方法区的垃圾收集

6.1出现频繁gc的原因:

(1)System.gc()方法的调用。
此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间歇性停顿的次数。强烈影响系建议能不使用此方法就别使用,让虚拟机自己去管理它的内存,可通过通过-XX:+ DisableExplicitGC来禁止RMI调用System.gc。

(2)老年代空间不足。
老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap space为避免以上两种状况引起的Full GC,调优时应尽量做到让对象在Minor GC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。

(3)元空间空间不足
JVM规范中运行时数据区域中的方法区,在HotSpot虚拟机中又被习惯称为永生代或者永生区,Permanet Generation中存放的为一些class的信息、常量、静态变量等数据,当系统中要加载的类、反射的类和调用的方法较多时,Permanet Generation可能会被占满,在未配置为采用CMS GC的情况下也会执行Full GC。如果经过Full GC仍然回收不了,那么JVM会抛出如下错误信息:java.lang.OutOfMemoryError: PermGen space为避免Perm Gen占满造成Full GC现象,可采用的方法为增大Perm Gen空间或转为使用CMS GC。

(4)堆中分配很大的对象
年代虽然有很大的剩余空间,但是无法找到足够大的连续空间来分配给当前对象,此种情况就会触发JVM进行Full GC。
为了解决这个问题,CMS垃圾收集器提供了一个可配置的参数,即-XX:+UseCMSCompactAtFullCollection开关参数,用于在“享受”完Full GC服务之后额外免费赠送一个碎片整理的过程,内存整理的过程无法并发的,空间碎片问题没有了,但提顿时间不得不变长了,JVM设计者们还提供了另外一个参数 -XX:CMSFullGCsBeforeCompaction,这个参数用于设置在执行多少次不压缩的Full GC后,跟着来一次带压缩的。

6.2 排查频繁gc

1.查看项目启动的GC命令,检查是否有异常指令:
比如有些同事可能对于GC参数理解的不是很透彻,本来想着优化的目的,但是却起了反作用。

2.查看yonggc的频率:
这一步主要是为了查看是否存在递归或者频繁创建对象,并且频繁回收,导致yonggc频繁,进而导致fullgc频繁,如果ygc频繁,则需要检查代码中是否存在不符合规范的地方了。

3.查看每一次fullgc的回收率:
如果ygc正常,但是fullgc频繁,那么这一步是为了查看是否存在内存泄漏,定位是否存在对象的长时间引用,内存泄露会占用大量内存空间,且无法正常回收,导致fullgc越发频繁,且stw时间越发长。

4.查看堆栈情况,找到占用内存较大的对象:
查看当前的堆栈信息,如果有监控工具可以直接使用,没有的话就使用JDK自带的一些命令,找到是否存在大对象的频繁创建。

5.查看元数据区的回收频率:
Metadata GC Threshold,当我们发现以上情况都不存在,然后dump一下看看是否发生元数据区导致的频繁fullgc,当然这种情况很少见,但是可以定位排除一下。

7.java实现不知道类型的文件的传送

Java面试题及答案(2021年Java面试题大全带答案) 01、Java有没有goto?02、JVM怎么判断一个对象是不是要回收?03、创建了几个字符串对象?04、什么是过滤器?怎么创建一个过滤器05、介绍一下 JVM 中垃圾收集器有哪些?他们特点分别是什么?06、线程池的执行原理?07、假设数组内有5个元素,如果对数组进行反序,该如何做?08、java 中 IO 流分为几种?09、你都有哪些手段用来排查内存溢出?10、GC 是什么?为什么要有 GC?此处,仅展示前10道,查看更多40道…01、CMS分为哪几个阶段?02、 阅读详情

相关推荐

2025反爬终极方案:Python破解Cloudflare v2行为指纹,设备伪装+轨迹模拟拦截率压至1%

Cloudflare v2的反爬逻辑越来越接近“人类行为识别”,单纯的技术破解已失效,核心竞争力变成“模拟真实用户的能力”。本文的终极方案本质是“全方位复刻人类行为”——从设备指纹到操作轨迹,从网络特征到交互模式,让爬虫成为“无法被区分的真实用户”。这套方案的优势是“通用性强”,不仅适用于Cloudflare v2,也能破解大多数高反爬网站(如小红书、知乎、跨境电商)的行为检测;且代码可直接复用,新手只需替换目标URL和数据提取逻辑,就能快速落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2355

【面试题】2021最新Vue面试题汇总

面试题(2020)Vue面试题汇总 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 1、对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写。 Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。 View 代表UI 组件,它负责将数据模型转化成UI 展现出来。 ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对

归子莫的博客 5万+

【AGC】【serverless】【云函数】云函数常见问题

1、云函数添加了AUTH触发器后,在用户执行注册、销户、登录、登出动作时,云函数的event对象会自动触发返回相应信息。比如我在“层”的压缩包里放了config/config.txt,那么我在云函数里怎么调用这个文件?层的目录是:/dcache/layer,函数的目录是/dcache/layer/func。在云函数里往云数据库里插入数据返回的是180000,这是正常吗?已经按照文档在后台对应的云函数里配置了,所需的AUTH触发器。层的用法和放在函数里的用法是相同的。云函数里的层如何调用?

华为开发者联盟 839

SpringCloud面试题及答案 300道,springcloud面试题总结 (持续更新)

SpringCloud面试题及答案(SpringCloud面试题大全带答案) 2021年面试题及答案【最新版】高级SpringCloud面试题大全,发现网上很多SpringCloud面试题及答案整理都没有答案,所以花了很长时间搜集,本套SpringCloud面试题大全,有大量经典的SpringCloud面试题以及答案,面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习! 本套SpringCloud面试题大全,汇总了大量经典的Java程序员面试题以及答案,包含SpringCloud语言常见面试题、

架构师专栏 4万+

macOS安装Cplex+yalmip

macOS安装Cplex+yalmip

DS 4248

Centos7.6操作系统安装+Bond配置(600GB磁盘版本)

1.安装前准备工作 准备centos7.6操作系统镜像 CentOS-7-x86_64-DVD-1810.iso 服务器安装一般都是在BMC界面操作,所以安装前需要在BMC界面挂载好操作系统镜像 重启服务器后自动进入安装界面。 华为大数据集群安装操作系统配置

小时光 6010

大神整理的剑指Offer【所有面试题汇总】

    剑指Offer学习   剑指Offer这本书已经学习完了,从中也学习到了不少的东西,现在做一个总的目录,供自已和大家一起参考,学如逆水行舟,不进则退。只有不断地学习才能跟上时候,跟得上技术的潮流! 所有代码下载【https://github.com/Wang-Jun-Chao/coding-interviews】 目录 第01-10题 【剑指Offer学习】【面试题02:...

晓飛的博客 3万+

GD32官方资料学习体系(主要包括MCU选型、原理图PCB设计、软件开发入门及用户手册等)

大部分还未更新,先占个坑,日后更新…… 目前国外芯片涨价涨的离谱(就是在说ST),国内最好的替代就是兆易创新出的系列芯片了。但是官方资料繁杂,小白上手不易,因此边入门边记录,也给后来者根据官方资料可以有一个较为完整的学习体系。

Eddie的博客 1万+

MySQL面试题合集!

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day13 本篇总结的是 MySQL 相关的面试题,后续会每日更新~ 一、MySQL索引分析以及相关面试题 参考文章:MySQL索引分析以及相关面试题 二、MySQL主从复制与表拆分相关问题总结 参考文章: MySQL主从复制与表拆分相关问题总结 三、MySQL如何解决幻读和不可重复度? 参考文章:MySQL如何解决幻读和不可重复度? 四、MySQL中联表查询条件WHERE和ON的区别? 参考文章:MySQL中联表查询条件WHERE和O.

兴趣使然的草帽路飞 3万+

STM32F103C8T6+A4988驱动42步进电机全流程(附接线图+代码解析)

本文详细介绍了使用STM32F103C8T6单片机与A4988驱动模块控制42步进电机的完整流程。内容涵盖硬件接线图解析、电流设置、GPIO驱动代码编写以及细分控制等核心实践,旨在帮助嵌入式开发者和DIY爱好者快速实现精准运动控制,适用于3D打印机、CNC等需要精密定位的项目。

Python的专栏 794

基于Simulink的智能车辆电子稳定控制(ESC)仿真

本文完成了基于 Simulink 的智能车辆电子稳定控制(ESC),实现了:✅ 构建含轮胎非线性的车辆动力学模型✅ 设计滑模横摆稳定性控制器✅ 实现四轮制动力分配逻辑✅ 验证在双移线低附着场景下的卓越稳定性✅ 为主动安全控制系统开发提供完整范式。

xiaoheshang_123的博客 79

IT行业经典面试题,121套面试题

 IT行业经典面试题,121套面试题资源大小: 580.80KB资源类型:发布人: eyelife        发布日期: 2天前Tag: 名企,计算机 资源分: 10下载人数: 857 4.33/347人评分 12 3 4 5 <!--评论收藏 举报共享-->评论 分享 收藏 举报 上传

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 5243

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1117

干货,别再浪费时间到处找了,各大面试题和答案都在这里

又到一年跳槽季,课下不准备,面试徒伤悲。 本文汇总了常见面试题及面试技巧,让百忙中的程序员,少花精力乱找资料,希望对你有帮助。 一、面试题及答案 1、Java面试题阶段汇总 2、史上最全69道Spring面试题和答案 3、史上最全 40 道 Dubbo 面试题及答案 4、紧急整理了 20 道 Spring Boot 面试题 5、Spring Cloud面试题 5、史上最全Jav...

勇往直前的专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新前端面试题、高频面试题、面试题总结

Doctype 作用HTML5 新增的内容有哪些Html5 新增的语义化标签有哪些对 HTML 语义化标签的理解行内元素/块级元素有哪些视频/音频标签的使用说一下 HTML5 drag apiES6 新特性Let 与 var 与 const 的区别Js 基本数据类型有哪些字符串数组方法有哪些请简述普通函数和构造函数的区别Ajax 如何使用 一个完整的 AJAX 请求包括五个步骤:如何判断一个数据是 NaN闭包是什么?有什么特性?对页面会有什么影响Js 中常见的内存泄漏事件委托是什么?如何确定事件源(Even

HeXinT的博客 1866

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Promise面试题

由于then方法是异步的,当片段一(代码中已标出)代码没有执行完,片段二是不会执行的,转而会执行片段三,由于执行片段三前已执行resolve,其实例对象状态已变为成功,因此执行片段三的then方法中第一个回调,输出8,接着回到片段一里的第一个then方法,由于已经执行resolve,其实例对象状态已变为成功,因此执行then方法,输出4,此时若片段一中第一个then没有执行完,也不会接着链式执行第二个then。重难点:3之后输出8,4之后输出6,是因为then方法是异步的,前一个没有执行完,会接着往下走。

m0_47743942的博客 1761

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Linux驱动开发面试题整合

Linux 驱动常见面试及答案 八个常见的Linux驱动面试题 Linux驱动面试题总结 嵌入式校招面试题 BSP开发工程师面试笔试题集 海康面试题 面试题,详细 BSP开发流程讲解

qq_40904479的博客 4091

MySql 常用面试题 2024最新面试题(一)

使用函数。事务是一组有序的数据库操作,具有原子性、一致性、隔离性和持久性。事务回滚是将已完成的对数据库的更新操作撤销,使数据库回到事务开始前的状态。存储过程是一组预编译的SQL语句;可以使用命令对象调用存储过程。

qq_15363475的博客 2629

关于python的一些面试题

python

kblj5555的博客 1186

《剑指offer》所有面试题的笔记总结

*建议:还是以书为主,然后以我的笔记为辅助。 C#不太了解,所以没放书上的代码。博文https://www.cnblogs.com/james111/p/7003100.html对这个问题分析得很全面。 思路很简单,每个元素的值就是ta应该所处的数组下标,然后不断地归位就可以了。我的笔记如下: 这个题目相比上一个题目,难在“不能修改数组”上。所以思路是这样的: 以题目中的数组为例,长度为8,范围是1~7。从中间将其范围划分成两组:1~4一组,5~7一组。然后对值为1~4和值为5~7的数字进行计

zxc120389574的博客 780

面试题内容聚合

分类整理一些内容,方便需要时回过头来看,整理不易,如有疏漏,请多担待!之后要查找这篇文章,可以直接在Java知音公众号后台回复 “面试题聚合”面试技术文Java岗 面...

Java笔记虾 846

spring面试题_spring mvc面试题_springboot面试题库

1、 Spring中的自动装配有哪些限制? 2、4个Spring常见面试题及答案解析 3、java面试题及答案2018Spring高频率面试题 4、Spring Bean 的加载过程 5、Spring Bean 的生命周期,如何被管理的 6、Spring Boot面试题总结 7、Spring Cloud Bus是什么? 8、Spring Cloud与Dub...

技术研究中心 6055

【面试题】-java面试题总目录

前言:先吐槽一下面试吧,相信不少人都有这样的经历,其实你对某项技术已经掌握的很OK了,但在面试的时候却未必能发挥到很好,让面试官觉得你确实已经很好的掌握该技术,也就是说你实际对该技术掌握的程度有90%,但面试时表现出来的却只有30%甚至更少,这可能是表达能力的问题,但也可能很大程度是因为你没有刷面试题,有些平时几乎很少会用到地方没有涉及到刚好被问到了.就好生活中有些人开车开得很好,甚至是一些开车多...

老汉健身的博客 580

python面试题_300道Python面试题

Python 工程师也分不同的技术岗位,初级、中级与高级开发工程师需要具备的技能也不同。这个面试题覆盖的知识点按照由易到难罗列,分为【Python 基础】与【Python 高级】。【Python 基础】 1~3 (文件操作、模块与包、数据类型)知识点,虽然被归类为基础题,但大家在实际解题过程中还需要更多的思考,是否情况都考虑全面了。高级题部分就不用说了,都是一些在学习时有难度,不能一下就 get ...

weixin_39715538的博客 1287

Java基础面试题

Java基础 必知必会面试题 Java基础,面向对象,String,IO 其他内容面试题文章中有链接... 持续更新中...

weixin_46030002的博客 4159

Kotlin的几个面试题

今天去自己心仪的公司去面试,本来信心满满,结果面试下面自己深感能力不足,哎,错失了一次这么好的机会 不过还是感谢能给自己这次面试的机会 1 说一下Kotlin的伴生对象(关键字companion使用要说出来) 2 Kotlin的高阶函数使用过吗(平时使用的map,let ,apply ,also之类的都是高阶函数) (这些问题都可以在我的Kotlin专栏里面找到,) 3 java 中定义...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 9483
上一篇: Spring、SpringBoot总结
jaredray
博客等级 码龄7年 17粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值