首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php面试题目100及最佳答案

答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。...isset() 测试变量是否存在 empty() 测试变量是否为空 71.请用尽可能少的语句实现对输入Email地址进行验证的功能 eregi('^[_a-z0-9]+(/....例如实现实现消息推送 装饰器模式: 不修改原类代码和继承的情况下动态扩展类的功能,例如框架的每个Controller文件会提供before和after方法 迭代器模式: 提供一个方法顺序访问一个聚合对象中各个元素...但是isset()是 测试变量是否被赋值 ,而empty()是测试 一个已经被赋值的变量是否为空 。如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示。...— 检查给定的键名或索引是否存在于数组中 key_exists — 别名 array_key_exists array_rand — 从数组中随机取出一个或多个单元 array_reverse

8.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何编写出高质量的 equals 和 hashcode 方法?

    ,我们只需要两个对象的某个特定状态是否相等。...2、在某些业务场景下,我们需要使用自定义类作为哈希表的键,这时候我们就需要重写,因为如果不做特定修改的话,每个对象产生的 hashcode 基本上不可能相同,而 hashcode 决定了该元素在哈希表中的位置...我们使用一个小 Demo 来模拟一下特殊场景,让我们更好的理解为什么需要重写 equals 和 hashcode 方法,我们的场景是:我们有很多篇文章,我需要判断文章是否已经存在 Set 中,两篇文章相同的条件是访问路径相同...重写 equals 和 hashcode 方法之后,在哈希表中的查找如下图所示: 首先 article1 对象也会被映射到数组下标为 1 的位置,在数组下标为 1 的位置存在 article 数据节点,...所以会执行 article1.equals(article) 命令,因为我们重写了 Article 对象的 equals 方法,这个是否会判断两个 Article 对象的 url 属性是否相等,如果相等就返回

    84360

    期待已久的 JS 原生 groupBy() 分组函数即将到来

    在处理数组时,有时我们需要将其中的项目按照某个特定的属性或条件进行分类或分组。这个过程可能会多次重复,每次都需要编写分组函数或使用像 lodash 这样的库中的 groupBy 函数来完成。...对象中是否已经存在以当前年龄为键的数组 if (!...peopleByAge[age]) { // 如果不存在,创建一个以当前年龄为键的空数组 peopleByAge[age] = []; } // 将当前个人对象添加到对应年龄的数组中...person.age; // 检查acc对象中是否已经存在以当前年龄为键的数组 if (!...具体来说,代码需要不断检查对象中是否已经存在与年龄对应的键,如果不存在则创建一个空数组,并将当前个人对象推入该数组。

    1.3K20

    如何编写出高质量的 equals 和 hashcode 方法?

    ,我们只需要两个对象的某个特定状态是否相等。...2、在某些业务场景下,我们需要使用自定义类作为哈希表的键,这时候我们就需要重写,因为如果不做特定修改的话,每个对象产生的 hashcode 基本上不可能相同,而 hashcode 决定了该元素在哈希表中的位置...我们使用一个小 Demo 来模拟一下特殊场景,让我们更好的理解为什么需要重写 equals 和 hashcode 方法,我们的场景是:我们有很多篇文章,我需要判断文章是否已经存在 Set 中,两篇文章相同的条件是访问路径相同...重写 equals 和 hashcode 方法之后,在哈希表中的查找如下图所示: [format,png] 首先 article1 对象也会被映射到数组下标为 1 的位置,在数组下标为 1 的位置存在...article 数据节点,所以会执行 article1.equals(article) 命令,因为我们重写了 Article 对象的 equals 方法,这个是否会判断两个 Article 对象的 url

    62050

    深度解析HashMap:探秘Java中的键值存储魔法

    灵活性: HashMap允许存储不同类型的键和值,包括自定义对象。这使得它非常灵活,适用于各种场景。无序性: HashMap中的元素是无序的,不像List那样有顺序。...自动处理哈希冲突: 哈希表中可能存在冲突,即两个不同的键可能映射到相同的哈希桶。HashMap使用链表或红黑树来处理这种冲突,确保在冲突发生时也能够保持较好的性能。...桶可以使用数组或链表来实现。在数组实现中,每个桶是一个数组元素,可以直接通过索引访问。在链表实现中,每个桶是一个链表,用于存储哈希冲突的元素。...如果存在,则更新相应的值;如果不存在,则将新的键值对插入。检查是否需要进行扩容: 在插入键值对后,会检查当前HashMap的大小是否超过了阈值。...查找链表或红黑树: 由于不同键的哈希值可能相同,可能存在哈希冲突。在这种情况下,具有相同哈希值的键值对会存储在同一个数组索引位置的一个链表或红黑树中。

    13310

    《Effective-Ruby》读书笔记

    即使数组 NETWORKS 自身被冻结,但是元素仍然是可变的,你可能无法从数组中增删元素,但你一定可以对存在的元素加以修改。...我从没有改变哈希对象,当我插入一个元素之后,哈希并么有改变,但是默认值改变了 # 这也是 keys 方法提示这个哈希是空但是访问不存在的键时却反悔了最近修改的值的原因 # 如果你真想插入一个元素并设置一个键...# 传给 Hash::new 的块可以有选择地接受两个参数:哈希本身和将要访问的键 # 这意味着我们如果想去改变哈希也是可的,那么当访问一个不存在的键时,为什么不将其对应的值设置为一个新的空数组呢?...:每当访问不存在的键时,块不仅会在哈希中创建新实体,同时还会创建一个新的数组 # 重申一遍:访问一个不存在的键会将这个键存入哈希,这暴露了默认值存在的通用问题: # 正确的检查一个哈希是否包含某个键的方式是使用...垃圾收集器的清除阶段也有优化机制,分为两种模式:即使模式和懒惰模式。 在即使模式中,垃圾收集器会清除所有的未标记的对象。如果有很多对象需要被释放,那这种模式开销就很大。

    4K60

    Vue 3 高阶指南之 WeakMap

    在 JavaScript 里,map API 可以通过使其四个 API 方法共用两个数组(一个存放键,一个存放值)来实现。给这种 map 设置值时会同时将键和值添加到这两个数组的末尾。...从而使得键和值的索引在两个数组中相对应。当从该 map 取值的时候,需要遍历所有的键,然后使用索引从存储值的数组中检索出相应的值。...另外一个缺点是可能会导致内存泄漏,因为数组会一直引用着每个键和值。这种引用使得垃圾回收算法不能回收处理他们,即使没有其他任何引用存在了。...相比之下,原生的 WeakMap 持有的是每个键对象的“弱引用”,这意味着在没有其他引用存在时垃圾回收能正确进行。...WeakMap.prototype.has(key) 根据是否有key关联对象返回一个Boolean值。

    1.2K20

    腾讯php面试题之 – PHP开发工程师笔试试卷

    简单的合并数组 array_merge_recursive 合并两个数组,如果数组中有完全一样的数据,将它们递归合并 array_combine 和 ‘+’ :合并两个数组,前者的值作为新数组的键 2...,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写 答:其中bug存在两个方面, 1、在windowns中,当文件只有只读属性时,is_writeable()函数才返回false...答:我也找不到答案 6.PHP处理上传文件信息数组中的文件类型$_FILES[‘type’]由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠 答:用getimagesize...可以通过getimagesize()函数来判断上传的文件类型,如果是头像文件 会返回这样的一个数组 Array( [0] => 331 [1] => 234 [2] =>...每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。

    1K10

    连续反转!DeepMind遭俄罗斯团队质疑:我们该如何证明神经网络懂物理世界?

    但时隔八个月,来自俄罗斯和韩国的八位研究人员也在Science上发表了一篇科技评论,他们认为DeepMind原始研究中存在问题,即训练集和测试集可能存在重叠部分,导致实验结论不正确。...不过DeepMind的反应也很迅速,在该评论发表的同一天,立刻写了一篇回复表示反对,并表示强烈谴责:他们提出的观点要么不正确,要么与论文的主要结论以及对DM21总体质量的评估无关。...但用该方程来预测分子中的电子则显得力不从心,因为所有的电子都相互排斥,需要跟踪每个电子位置的概率,即使对于少量电子来说也是一项非常复杂的任务。...而电荷运动和键断裂是许多重要技术应用的核心,但这些问题也可能导致描述最简单分子(如氢)的官能团出现大量定性失败。...随着距离的增加,返回一个常数记忆的值会导致BBB预测出现显著错误。

    53520

    大话 JavaScript(Speaking JavaScript):第十六章到第二十章

    设置和删除会忽略继承,只影响自有属性。 设置属性 设置属性会创建一个自有属性,即使存在具有该键的继承属性。...另一方面,私有数据不可被外部访问也可能会带来不便。有时你想对私有功能进行单元测试。而一些临时的快速修复依赖于访问私有数据的能力。...检查属性是否存在 in运算符检查对象是否具有给定键的属性,但它会考虑继承的属性: > 'ownProp' in obj // ok true > 'unknown' in obj // ok false...数组中的空洞 更详细地解释了空洞。 请注意,大多数 JavaScript 引擎会在内部优化没有空洞的数组,并将它们连续存储。 数组也可以有属性 数组仍然是对象,可以有对象属性。...但它也可以用于确定数组中是否存在给定的元素索引。

    40420

    MongoDB权威指南学习笔记(1)--基础知识与对文档的增删改查

    数据库 数据库就是多个集合,一个mongo实例可以承载多个数据库,每个数据库可以有多个集合,每个数据库都有独立的权限。...只能用于整型、长整型或双精度浮点型的值 数组修改器 有一大类修改器可以用于操作数组 添加元素 push修改器:如果数组已经存在,push会向已有的数组末尾加入一个元素,要是没有就创建一个新的数组 db.blog.update...能够在一个操作中返回匹配结果并进行更新 查询 find 指定需要返回的键 有时并不需要将文档中所有键/值对都返回,可以通过find(或findOne)的第二个参数来指定想要的键。...一个键可以在任意多个条件,但是一个键不能对应多个更新修改器 特定类型的查询 null null不仅会匹配某个键的值为null的文档,而且还会匹配不包含这个键的文档。...) 除非特别声明,否则使用$slice时返回文档中的所欲键,别的键说明符都是默认返回未提及的键 返回一个匹配的数组元素 希望返回与查询条件相匹配的任意一个数组元素,可以使用$操作符得到一个匹配的元素。

    5.6K10

    MongoDB权威指南学习笔记(2)--设计应用

    $操作符如何使用索引 低效率的操作符 $where查询和检查一个键是否存在的查询完全无法使用索引 $ne查询可以使用索引,但并不是很有效,因为必须要查看所有索引的条目 $nin就总是要进行全表扫描 范围...设计多个字段的索引时,应该将会用于精确匹配的字段防到索引的前面,将用于范围匹配的字段放到最后 索引对象和数组 mongo允许对嵌套字段和数组建立索引,嵌套对象和数组字段可以与符合索引中顶级字段一起使用...,无法对形如db.users.find({“loc.city”:”xxx”})的查询使用索引 索引数组 对数组建立索引,可以高效的搜索数组中的特定元素 多键索引 对于索引的键,如果这个键在文档中是一个数组...“scanAndOrder”:false 是否在内存中对结果集进行了排序 “indexOnly”:false 是否只使用索引就能完成此次查询 “nYields”:0 为了让写入请求能够顺序执行...,返回包含所有值的数组 $unwind 拆分可以将数组中的每一个值拆分为单独的文档 如果希望在查询中得到特定的子文档,先使用“unwind”得到所有子文档,再使用“match”得到想要的文档

    8.5K30

    大话 JavaScript(Speaking JavaScript):第一章到第五章

    JavaScript 中的所有值都有属性。每个属性都有一个键(或名称)和一个值。您可以将属性视为记录的字段。...单个对象 像所有的值一样,对象都有属性。实际上,你可以把对象看作是一组属性,其中每个属性都是一个(键,值)对。键是一个字符串,值是任何 JavaScript 值。...() 'Person named Jane' in运算符检查一个属性是否存在: > 'newProperty' in jane true > 'foo' in jane false 如果读取一个不存在的属性...其次,属性 Point.prototype 包含一个具有方法的对象。前者数据对每个实例都是特定的,而后者数据在所有实例之间共享。...JavaScript 开发人员需求量大,但他们的人数也在不断增加。 JavaScript 有未来吗?

    37510

    当我们创建HashMap时,底层到底做了什么?

    ,得到了在 Entry数组中的存放位置: 如果此位置上的数据为空,此时的key1-value1添加成功。...在不断的添加过程中,会涉及到扩容问题,当数组容量大于数组现有长度乘以加载因子(如16*0.75,默认的加载因子为0.75)的时候,就会进行数组扩容,以减少哈希冲突(哈希冲突是指哈希函数算出来的地址被别的元素占用了...,判断数组是否存在,如果不存在创建长度为16的Node[ ]数组。...在jdk1.7中,即使在“数组容量大于数组现有长度乘以加载因子”时扩容,也不可避免地会有哈希冲突存在,因此,在jdk1.8中引入红黑树是为了进一步减少哈希冲突,提高查询效率。...结论:HashMap键是不能重复的,去除重复的条件是依赖键的hashCode方法和equals方法,如果键是自己的对象类型,必须要重写hashCode方法和equals方法,否则,不能去除重复的键。

    45710

    优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策

    解决方案——缓存空对象解决缓存穿透的有效方案之一是缓存空对象。这种方法涉及在缓存层中存储查询结果为“空”的标记或对象,以表明特定数据不存在。...布隆过滤器是一种空间效率极高的概率型数据结构,它能有效地判断一个元素是否可能存在于集合中。...添加一个键(key)到布隆过滤器时,首先使用这些哈希函数对键进行哈希运算,每个哈希函数生成一个整数索引值。然后,这些索引值经过对位数组长度的取模运算,确定在位数组中的具体位置。...接着,将这些位置的值设置为1,标记该键的存在。当查询布隆过滤器中某个键(key)是否存在时,操作过程与添加键时类似。首先,使用多个哈希函数对键进行哈希运算,得到多个位置索引。...然后,检查这些索引对应的位数组位置。如果所有相关位置的值都是1,那么可以推测该键可能存在;否则,如果有任意一个位置的值为0,则可以确定该键一定不存在。

    39541

    编程语言:类型系统的本质

    通过监控和测试,能够说明在给定特定输入时,软件在特定时刻的行为是符合规定的。但类型为我们提供了更加一般性的证明,说明无论给定什么输入,代码都将按照规定运行。...例如,当T是number时,我们得到的类型是一个数值数组number[],而当T是string时,得到的类型是一个字符串数组string[]。这种构造函数也称为“种类”,即类型T[]的种类。...数据是对象的状态,代码是一个或多个方法,也叫作“消息”。在面向对象系统中,通过使用其他对象的方法,对象之间可以“对话”或者发送消息。 OOP的两个关键特征是封装和继承。...一个“参数化表达式”的面向对象继承体系的例子。类图如下。 这里的表达式,可以通过eval() 方法,计算得到一个数字,二元表达式有两个操作数,加法和乘法表达式通过把操作数相加或相乘来计算结果。...函数的函子 除了函子外,需要知道的是,还有函数的函子。给定一个有任意数量的实参且返回类型T的值的一个函数。 函子在数学与函数式编程中 在数学中,特别是范畴论,函子是范畴之间的映射(范畴间的同态)。

    2.6K31

    python干货——字典

    和Java中的Map集合类似字典和列表一样,支持对其中的元素进行增删改查字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。...字典是除列表以外Python中最灵活的数据类型。字典也被称为哈希表、关联数组注意点:字典中key不可以重读,因为在字典中一次的操作都是基于key的。但是值可以重复字典的key只能是不可以改变的数据。...value值可以重复复制代码重点:如果键重复,那么第二个键值会覆盖第一个key可以使用的类型# key是不可变的类型。...(键, 值) 元组数组7、radiansdict.keys():以列表返回一个字典所有的键8、radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中...*不可以复制字典复制代码in :对象是否存在。可以判断字符串、列表、元组以及字典。

    1K20

    Web 性能优化:理解及使用 JavaScript 缓存

    但是,有一个问题。请注意,当 n 的值到终止递归之前,需要做大量的工作和时间,因为序列中存在对某些值的重复求值。...我们使用 memo 对象作为缓存来存储斐波那契数列,并将其各自的索引作为键,以便在执行过程中稍后需要时检索它们。...这是否意味着对于应用程序中的每个昂贵函数,我们都必须创建一个修改后的变量来维护内部缓存?...不,回想一下,我们通过从函数返回函数来了解到,即使在外部执行它们,它们也会导致它们继承父函数的范围,这使得可以将某些特征和属性从封闭函数传递到返回的函数。...在返回的函数中,我们使用 if..else 语句检查是否已经有指定键(参数) n 的缓存值。如果有,则取出并返回它。如果没有,我们使用函数来计算结果,以便缓存。

    1.1K00
    领券