最近面试点记录总结

简介: 最近面试点记录总结

1 红黑树属于平衡二叉树。它不严格是因为它不是严格控制左、右子树高度或节点数之差小于等于1,但红黑树高度依然是平均log(n),且最坏情况高度不会超过2log(n),通过左字数


红黑树能够以O(log2(N))的时间复杂度进行搜索、插入、删除操作。此外,任何不平衡都会在3次旋转之内解决。这一点是AVL所不具备的。


2.hash碰撞的解决方式是开放寻址法和拉链法。


hash碰撞的解决方式是开放寻址法和拉链法。


开放寻址法指的是,当前数组位置1被占用了,就放到下一个位置2上去,如果2也被占用了,就继续往下找,直到找到空位置。


拉链法采用的是链表的方式,这个时候位置1就不单单存放的是Entry了,此时的Entry还要额外保存一个next指针,指向数组外的另一个位置,将李四安排在这里,张三那个Entry中的next指针就指向李四的这个位置,也就是保存的这个位置的内存地址。如果还有冲突,就把又冲突的那个Entry放到一个新位置上,然后李四的Entry指向它,这样就形成一个链表。


总结起来:开放寻址法和拉链法都是想办法找到下一个空位置来存发生冲突的值。


3.设计模式工厂模式的好处


工厂模式是我们最常用的实例化对象模式了,工厂模式在Java程序系统可以说是随处可见。它的好处有:


1、工厂模式可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任。


2、客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。


3、通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。


构造函数中可以调用virtual函数嘛?


可以,虚函数底层实现原理(但是最好不要在构造和析构函数中调用) 可以,但是没有动态绑定的效果,父类构造函数中调用的仍然是父类版本的函数,子类中调用的仍然是子类版本的函数。 effictive c++第九条,绝不在构造和析构过程中调用virtual,因为构造函数中的base的虚函数不会下降到derived上。而是直接调用base类的虚函数。绝不在构造和析构函数中调用virtual函数:

a) 如果有继承,构造函数会先调用父类构造函数,而如果构造函数中有虚函数,此时子类还没有构造,所以此时的对象还是父类的,不会触发多态。更容易记的是基类构造期间,virtual函数不是virtual函数。

b) 析构函数也是一样,子类先进行析构,这时,如果有virtual函数的话,子类的内容已经被析构了,C++会视其父类,执行父类的virtual函数。

c) 总之,在构造和析构函数中,不要用虚函数。如果必须用,那么分离出一个Init函数和一个close函数,实现相关功能即可


js闭包的用途


用途在三个方面:


1.可以通过外部读取函数内部的值


2.可以封装函数的私有方法和私有属性


3。可以把一部分数据永远放在内存中


tcp滑动窗口

TCP协议如何保证数据可靠性_nZk丶的博客-CSDN博客_tcp如何保证数据传输的可靠性

相关文章
|
Kubernetes Java 测试技术
无忧微服务:如何实现大流量下新版本的发布自由
本文讨论了微服务上云过程中的稳定性挑战,特别是变更引起的生产故障。阿里云MSE(微服务引擎)提供了一种全链路无损发布方案,旨在消除变更风险,实现白天流量高峰时的安全发布。
1091 107
|
缓存 应用服务中间件
1、IDEA中新建Module出现文件名重复的问题解决
IDEA中新建Module出现文件名重复的问题解决 问题描述:在IDEA中运行Tomcat出现错误,提示Error during artifact deployment时,删除并重建Module及Tomcat Server后,出现文件重复问题,不可再命名为已删除的Module文件名,文件夹中删除文件
|
11月前
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
275 2
|
Linux Shell 调度
(三)Linux命令行工具和脚本编程:自动化任务和提高效率
Linux命令行工具和脚本编程是系统管理员和开发人员必备的技能。这些技能不仅可以自动化日常任务,还可以提高工作效率。本文将介绍如何使用Linux命令行工具和Shell脚本编程来自动化任务,并提供一些实用的技巧和示例。
300 1
|
API Android开发
android setTag (int key, Object tag)使用
android setTag (int key, Object tag)使用
186 1
|
算法 计算机视觉
【Qt&OpenCV 图像旋转getRotationMatrix2D】
【Qt&OpenCV 图像旋转getRotationMatrix2D】
222 0
|
编解码 前端开发 JavaScript
【专栏】PostCSS 究竟有何魅力,为何说它真的太好用了呢?本文将深入探讨 PostCSS 的特点、优势以及在实际开发中的应用。
【4月更文挑战第29天】PostCSS是一个JavaScript工具,用于解析、转换和优化CSS代码,其亮点在于丰富的插件生态和高度定制化。它能自动添加浏览器前缀、压缩代码、格式化样式,支持自定义媒体查询和变量。通过无缝集成现有工作流程,PostCSS提升了开发效率和代码质量。未来,随着前端技术发展,PostCSS的插件生态将更加强大,持续为开发者带来便利。尝试PostCSS,发掘更多可能性!
237 0
|
存储 监控 Linux
借助gopsutil库,获取机器相关信息
借助gopsutil库,获取机器相关信息
200 0
|
监控 算法 数据安全/隐私保护
使用Python实现批量文件的压缩处理
使用Python实现批量文件的压缩处理
222 0
|
SQL 数据库连接 数据库
C# | 将DataGridView中的数据保存到Accesss数据库
要将WinForm的DataGridView中的数据保存到Access数据库,可以按照本文的步骤进行。 在Visual Studio中,打开项目,右键单击“引用”文件夹,选择“添加引用”,在“COM”选项卡中找到并选中“Microsoft Office 14.0 Access Database Engine Object Library”,然后单击“确定”按钮。
542 0
C# | 将DataGridView中的数据保存到Accesss数据库

热门文章

最新文章