面试相关-List总结

PySide6 vs PyQt6:新手如何根据Python版本选择GUI库?附版本兼容性测试 本文针对Python GUI开发新手,详细对比了PySide6与PyQt6的核心差异,并提供了基于Python 3.8至3.12等不同版本的兼容性实测数据与选择建议。文章重点分析了版本选择策略,帮助开发者根据自身Python环境、项目需求(如与matplotlib集成)及许可证考量,做出最合适的决策,并附有安装验证与避坑指南。 阅读详情
package Other;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;

/**
 * @author vincent
 * @description 面试相关List
 * @Date 2020-03-18 17:03
 */
public class LList {

    public static void main(String[] args) {
        /**
         * ArrayList
         */
        ArrayList<Object> arrayList = new ArrayList<>();
        // 结构是数组 object[]
        // 优点查找和访问速度更快 缺点新增删除慢线程不安全
        // 延伸: 插入速度快但是查找速度慢的是linkedlist 线程安全的是vector

        ArrayList<Object> objects = new ArrayList<>(10);
        ArrayList<Object> objects2 = new ArrayList<>(10);
        // 因为结构是数组,所以构造方法可以传入初始长度 默认是0
        // Java经典bug 构造方法赋初始长度,只是构建了一个长度的数组,但是size还是0
        // 如果此时set,会报越界错误 除非初始后就add够足够的长度
        for (int i = 0; i < 10000; i++) {
            objects.add(i);
            objects2.add(i);
        }
//        objects.add(5,"5");


        arrayList.add("");
        // 空数组,只有第一次add操作才会赋值10的初始长度
        // 数组扩容公式
        // int newCapacity = oldCapacity + (oldCapacity >> 1); oldCapacity为当前数组长度 翻译:len+len/2
        // 扩容方式和hashmap一样,都是新建一个数组 复制
        // 10这个默认值,在Java里都是sun公司根据调研,得出的大概最有效率的一个初值

        //新增删除效率问题
        arrayList.add(null);// 普通新增不指定index则直接加在数组最后
//        arrayList.add(5,null);
        // 如果指定位置的话
        // 看源代码可以看到,首先判断数组是否需要扩容,其次index+1后的所有数组进行copy,然后再把新增元素添加到index位置
        // 如果数组长度够大,len-index-1的元素复制太多,效率可想而知
        arrayList.remove(null); // 删除同理,先for循环对比得到index,len-index-1的元素向前复制,置len位置为null

        // 新增删除就一点慢吗
        // 答案是否定的,我们通过源码可以看到,arraylist主要是通过复制截取数组来实现的插入和删除,并不涉及移位,这里就考量到一个index,即操作的元素在数组中的位置
        long startTime=System.nanoTime();
        objects.remove(5000);
        long endTime=System.nanoTime();
        System.out.println("删除1000运行时间: "+(endTime - startTime)+"ms");
        long endTime2=System.nanoTime();
        objects2.remove(9000);
        System.out.println("删除9000运行时间: "+(endTime2 - endTime)+"ms");
        // 通过上面这段代码,我们能看出,index越靠近尾部,执行效率越低

        //arraylist适合用来做队列吗
        // 我们首先了解队列的原则应该是先入先出first in first out
        // 即我们的remove要remove头,add要add尾,反过来也可以
        // 我们知道arrayList的新增删除都需要复制移位,效率低,所以不适合
        // 相反,数组是适合做队列的,经典的几个队列底层都是使用的定长环形队列

        /**
         * LinkedList
         */
        LinkedList<Object> linkedList = new LinkedList<>();
        // 结构链表
        linkedList.add(null); // 插入因为只需要操作尾部的next即可,所以效率高
        linkedList.add(1,null); // 先定位index,元素的next链接index的next,元素的pre链接index,index的next指向元素
        linkedList.get(1); // 这里看源码可以看到,判断index和size/2,决定是在链表前半段查找,还是后半段查找
        linkedList.indexOf(null);// indexof都是从头判断到尾

        // 所有源码有modcount的都是failfast机制(快速失败),即遍历时,如果其他线程操作该元素导致该元素的modcount改变,则此次遍历会报错

        /**
         * 对比
         */
        // arrayList因为底层结构是数组,数组是一片连续的空间,读取都很快,但是插入删除需要频繁的开辟新的数组复制
        // linkedList因为底层结构是链表,链表没有扩容问题,有新数据就建一个node,改变前驱后驱即可,但是因为数据在内存中存储空间不连续,读取效率低


        /**
         * 线程安全的Vector
         */
        Vector<Object> vector = new Vector<>();
        // vector的源码其实和arrayList一模一样,只是每个方法上加了synchronized保证线程安全
    }
}

浮点数精度陷阱全解析:从IEEE 754到深度学习部署选型 在计算机数值计算中,浮点数是表示带小数数字的标准方式,但它的存储规则决定了精度和边界天生存在限制。许多开发者都曾遭遇过0.1+0.2不等于0.3的尴尬,或是模型训练中loss变成NaN的困扰,这些问题的根源往往指向IEEE 754标准中的规格化、非规格化表示及舍入规则。理解浮点数的底层原理,不仅能避开直接的比较判断陷阱,还能指导我们在不同场景下做出合理的技术选型。从C语言的printf到Python的repr,从嵌入式串口打印到深度学习中的FP32、FP16、BF16、TF32格式,浮点数知识贯穿底层开发和 阅读详情

相关推荐

ray.tune调参学习笔记0:调参基本流程

本篇总结python中使用tune调参的整体流程

Mr_111000的专栏 2622

泛型类List<Model>和 DataTable的分组统计

项目中在经常会对数据解析并做图标展示,数据获取的方式有很多(文本文件、api、数据库……),大多数情况下我们都会将数据转化为泛型类List或者DataTable两种数据类型并做处理,并绑定在UI界面做各种炫酷的展示,下面我们讲讲这泛型类List和DataTable两种数据源的数据处理吧。 ...

fengzhilu000【u012761373】 671

李宏毅机器学习hw3

Homework 3 - Convolutional Neural Network 1作业概述 在food_11文件中有三个文件分别是training、validation、testing,打开training和validation可以看见总共有11种食物(0-10的类别编号),而testing是没有类别编号的。 然后用卷积神经网络对食物图片进行分类。 2导入用到的库 torch库 这个我弄了半天,直接pip总是timeout,用镜像源下下来又出现OSError: [WinError..

老问题的博客 4188

Java List常见面试题

1、你知道的List都有哪些?ArrayList、LinkedList、Vector等。 2、List是有序的吗?List是有序的。3、List和Vector有什么区别?Vector是List接口下线程安全的集合。4、ArrayList和LinkedList的底层数据结构是什么?ArrayList使用的是数组结构,LinkedList使用的是链表结构。 5、ArrayList默认大小是多少,是如何...

qq_35774311的博客 1万+

FlowPic实战:从流量到图像的端到端加密应用识别

本文深入解析了FlowPic技术如何将网络流量转化为图像,并利用CNN模型进行端到端加密应用识别。该方法通过分析数据包大小和时序信息生成流量图像,有效绕过加密内容,实现对视频、聊天、文件传输等应用的精准分类。文章提供了从流量抓取、图像生成到轻量级CNN模型设计与训练的完整实战指南,并探讨了在VPN、Tor等复杂场景下的应用与挑战。

weixin_29046035的博客 151

Abaqus梁模型仿真中的常见陷阱与优化策略

本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。

weixin_29099217的博客 461

【面试】我是如何面试别人List相关知识的,深度有点长文

weixin_30498921的博客 282

simulink构建一个基于 BP(反向传播)神经网络 的自适应 PID 控制系统

本文介绍了基于BP神经网络的自适应PID控制系统设计方法。系统通过神经网络实时调整PID参数,实现智能控制。主要内容包括:1)系统架构设计,采用误差反馈和在线学习机制;2)详细建模步骤,从被控对象定义到神经网络结构设计;3)S-Function实现核心算法,包含前向传播、PID计算和反向传播;4)仿真结果分析,显示神经网络PID在响应速度、超调控制和鲁棒性方面的优势;5)进阶建议和常见问题解决方案。该方法突破了传统PID的局限性,实现了具有自我学习能力的智能控制。

xiaoheshang_123的博客 51

Java集合框架基础-----List

List:    接口,常用ArrayList实现.  起始位置为0.添加元素可以指定添加位置,删除亦是如此.      *注意:考虑边界,指定位置不能超过序列的长度.  List可以添加另一个List,简单的说就是合并.通常是数组转集合序列然后合并.    常见方法list.addAll();此方法同样可以指定保存位置  List中保存的内容是有序且可以重复的.    遍历常用Ite

Model_Vincent的博客 421

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

Systemcall名屋 2978

从零到精通:BLDC电机驱动电路详解与设计思路

这套电机驱动电路从核心控制器到反馈采集模块,涉及了BLDC电机驱动的方方面面。每一个模块的设计和选择都需要综合考虑系统需求和实际使用环境。在实际应用中,很多细微的设计改进都会显著影响电机的运行性能。

weixin_43199439的博客 3100

List相关面试题

Java SE 八股文,List面试题

2402_87631234的博客 342

【OpenCV】图像的像素直方图 图像特征点 cv::FAST cv::ORB ORB_SLAM2::ORB

文章目录图像直方图代码实现cv::FAST和cv::ORB 检测图像特征点cv::FAST和cv::ORB 检测图像特征点代码实现ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比代码实现 图像直方图代码实现 图像是由不同数值(颜色)的像素构成的,像素值在图像中的分布情况是图像的重要属性,可以用直方图修改图像的外观,标识图像的内容,检测图像中特定的物体或纹理。 单通道灰度图像中每个像素都有一个 0(黑色)-255(白色)的整

小秋 AI SLAM 入门实战教程 2510

【面试】大佬是如何面试别人List相关知识的

本文公众号来源:编程新说李新杰作者:编程新说看后总结:良心面试官面试我们应该正确对待。知道的就回答,不知道的就请教,似是而非的就探讨,开开心心的度过一个小时的交谈就行了...

3y 506

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

我是如何面试别人List相关知识的

作者 |  李新杰 来源 |  编程新说 微信公众号 先来点鸡汤 前几年易中天可谓非常的火,接受过很多采访。他的情况比较特殊,在武汉读高中时期,恰逢“知识青年上山下乡”活动,就到新疆去了。 在新疆生产建设兵团工作、生活了10年,而后在乌鲁木齐钢铁公司子弟中学任教。77年全国恢复高考后他没有去考大学,78年国家恢复研究生招生后他去考了,然后被武汉大学中文系录取。 当时主持人问他,为什么...

勇往直前的专栏 226

IMSL CNL 7.0.0 (x86-64)Crack

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

算法复杂度分析、List相关面试题、HashMap

**双向链表**:每个结点有后继指针next和前驱指针prev,支持双向遍历,查询头尾结点的时间复杂度是O(1),平均查询时间复杂度是O(n),给定节点找前驱节点的时间复杂度为O(1),增删头尾结点的时间复杂度为O(1),其他部分结点增删的时间复杂度是O(n),给定节点增删的时间复杂度为O(1)。- **单向链表**:每个结点包括数据域和指针域,支持查询(头节点时间复杂度为O(1),其他结点为O(n))、插入和删除(头节点时间复杂度为O(1),其他结点为O(n))操作。

weixin_62969822的博客 857

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大佬是如何面试别人List相关知识的

  说面试时他内心非常紧张,但面试官总是面带微笑很温和地跟他说话。遇到不懂的地方,总是非常有耐心地给他讲解,旁征博引,举一反三。最后他都听懂了,而且也不紧张了。   我感觉这是我收到的对我最高的评价,不是吗?...

zouduchen的博客 136

是如何面试别人List相关知识的

参考:https://mp.weixin.qq.com/s/5AitRt2gErclGC_VHf0Uxw

weixin_33825683的博客 80

List和map相关的面试题

1.Collection 与 Map 简介: Collection 每个位置只有一个元素,旗下分为两个门派:List和Set –List:ArrayList,LinkedList,Vector –Set:HashSet / TreeSet Collection、List、Set都是接口,不能实例化。 继承自它们的 ArrayList, Vector是具象class,这些才可被实例化。 Map(ke...

weixin_39638459的博客 6279

Java 集合List相关面试题

数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。我们定义了这么一个数组之后,在内存的表示是这样的:现在假如,我们通过arrar[1],想要获得下标为1这个元素,但是现在栈内存中指向的堆内存数组的首地址,它是如何获取下标为1这个数据的?

个人博客,记录了本人学习的各种有趣的技术。 2339

面试相关list

1、纯函数? 如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。 数组排序比较 看以下数组,在各种排序操作后都下输出什么? const arr1 = [‘a’, ‘b’, ‘c’]; const arr2 = [‘b’, ‘c’, ‘a’]; console.log( arr1.sort() === arr1, arr2.sort() == arr2, arr1.sort() === arr2.sort() ); 答案和解析 答案:

bluefish_flying的博客 411
上一篇: 面试相关-从HashMap聊到ConcurrentHashMap
下一篇: 解决java.lang.NoClassDefFoundError: org/springframework/data/redis/connection/RedisStreamCommands
Model_Vincent
博客等级 码龄9年 1粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值