php面试题:

  1. isset和empty,单双引号的区别

    1.
    empty() 函数用于检查一个变量是否为空。当一个变量并不存在,或者它的值等同于 FALSE,
    那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释放了一个变
    量之后,再通过 isset() 判断将返回 FALSE。若使用 isset() 测试一个被设置成 NULL
    的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。对于 0、false、空字符串、空数组的判断上,empty() 可以识别为空,isset() 则不能识别。2.
    a.PHP 会解析双引号中的变量,而不会解析单引号中的变量。
    b.单引号和双引号中都可以使用转义字符\,但是,在单引号定义的字符串中只能转义单引号和转义符本身,而在双引号定义的字符串中,PHP 可以转义更多的特殊字符。
    c.因为单引号不需要考虑变量的解析,所以处理速度比双引号要快,我们在定义字符串时应该尽量遵循能用单引号尽量用单引号的原则。
  2. PHP中 error_reporting函数有什么作用
    error_reporting() 函数规定报告哪个错误 。该函数设置当前脚本的错误报告级别。该函数返回旧的错误报告级别。
  3. include和require有什么区别
    1、使用include时,当包含的文件不存在时,系统会报出警告级别的错误,程序会继续往下执行。
    使用require包含文件时,当包含的文件不存在时,系统会先报出警告级别的错误,接着又报
    一个致命级别的错误。程序将终止执行。2、  require能让php的程序得到更高的效率,在同一php文件中解释过一次后,不会再解释第
    二次。而include却会重复的解释包含的文件。
  4. 转义用户输入的字符有哪些函数
    addslashes、htmlspecialchars、htmlentities、mysql_real_escape_string
  5. 静态化常用的设计模式
    1.单例设计模式 2.简单工厂模式 3.观察者模式 4.适配器模式 5.策略模式 6.装饰器模式
  6. 你用的框架生命周期是怎么样的
    一、php生命周期(5块)   模块初始化阶段  ---   php_module_startup()   请求初始化阶段  ---   php_request_startup()   执行脚本阶段     ---   php_execute_script()   请求关闭阶段     ---   php_request_shutdown()   模块关闭阶段     ---   php_module_shutdown()  二、Laravel 的生命周期   1、Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。   2、注册类文件自动加载器 : Laravel通过 composer 进行依赖管理,无需开发者手动导入各种类文件,而由自动加载器自行导入。   3、创建服务容器:从 bootstrap/app.php 文件中取得 Laravel 应用实例 $app (服务容器)    创建 HTTP / Console 内核:传入的请求会被发送给 HTTP 内核或者 console 内核进行处理 4、载入服务提供者至容器:在内核引导启动的过程中最重要的动作之一就是载入服务提供者到你的应用,服务提供者负责引导启动框架的全部各种组件,例如数据库、队列、验证器以及路由组件。   5、分发请求:一旦应用完成引导和所有服务提供者都注册完成,Request 将会移交给路由进行分发。路由将分发请求给一个路由或控制器,同时运行路由指定的中间件三、TP 的生命周期
    1、用户发起的请求都会经过应用的入口文件,通常是 public/index.php文件。当然,你也可以更改或者增加新的入口文件。2、接下来就是执行框架的引导文件,start.php文件就是系统默认的一个引导文件。3、系统会调用 Loader::register()方法注册自动加载,在这一步完成后,所有符合规范的类库(包括Composer依赖加载的第三方类库)都将自动加载。4、执行Error::register()注册错误和异常处理机制。5、执行应用的第一步操作就是对应用进行初始化,加载配置6、应用初始化完成后,就会进行URL的访问检测,包括PATH_INFO检测和URL后缀检测。7、如果开启了url_route_on参数的话,会首先进行URL的路由检测。8、在完成了URL检测和路由检测之后,路由器会分发请求到对应的路由地址,这也是应用请求的生命周期中最重要的一个环节。9、控制器的所有操作方法都是return返回而不是直接输出,系统会调用Response::send方法将最终的应用返回的数据输出到页面或者客户端,并自动转换成default_return_type参数配置的格式。10、事实上,在应用的数据响应输出之后,应用并没真正的结束,系统会在应用输出或者中断后进行日志保存写入操作。-----------------------------------
    ©著作权归作者所有:来自51CTO博客作者SHENMIYANG的原创作品,请联系作者获取转载授权,否则将追究法律责任
    php生命周期 框架生命周期
    https://blog.51cto.com/u_15489374/4960814
  7. 类的自动加载怎么实现?
    php实现类自动加载的方法:1、使用“__autoload”魔术函数实现加载类;2、通过“spl_autoload_register”函数代替autoload函数作用。spl_autoload_register 函数的功能就是把传入的函数(参数可以为回调函数或
    函数名称形式)注册到 SPL __autoload 函数队列中,并移除系统默认的 __autoload() 函数。一旦调用 spl_autoload_register() 函数,当调用未定义类时,系统就会按顺
    序调用注册到 spl_autoload_register() 函数的所有函数,而不是自动调用 __autoload() 函数。
  8. composer的功能和实现?
    1.什么是Composer?Composer 是 PHP 的一个依赖管理工具,简单的说就是我们的项目通常会使用其它代码库,
    这时仅仅是在项目中申明依赖哪些代码库,默认情况下它不会在全局安装任何东西。composer 加载核心思想是通过 composer 的配置文件在引用入口文件 (autoload.php) 时,将类和路径的对应关系加载到内存中,最后将具体加载的实现注册到 spl_autoload_register 函数中。最后将需要的文件包含进来
    具体看下面链接↓
    ————————————————
    原文作者:arvin-hermit
    转自链接:https://learnku.com/articles/62233
    版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
  9. 路由是怎么实现的?
    自行百度搜索。。
  10. 框架有哪些?优点特性?
    TP框架:ThinkPHP简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer(tp6.0已完全支持),实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。thinkphp和laravel的区别:
    1.laravel自带很多功能,tp更轻量级,如中间件、数据迁移和数据填充、消息队列、事件等
    2.laravel有自带Artisan命令工具,tp没有
    3.laravel控制器方法设置对应路由才可以访问,tp不需要
    4.Laravel要求post、put请求必须在表单中携带csrf_token,tp不需要
    5.laravel的配置项基本在.env文件,tp配置项分布在config目录中
    6.控制器中渲染模板方式不同
    7.模板里使用条件判断、循环语句书写方式不同
  11. 包含文件怎么实现?什么是MVC?什么是依赖注入?模版引擎的原理?
    include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
    include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。MVC包括控制器(Controller),模型(Model),视图(View)。
    控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示
    模型的作用是获取数据并处理返回数据
    视图的作用是将取得的数据进行美化,并向用户终端输出依赖注入:
    本质上是指对类的依赖通过构造器完成自动注入通俗来说,就是你当前操作一个类,但是这个类的某些方法或者功能不是单单只靠这个类就能完成的,而是要借助另一个类的才能完成的最直接的标志就是  传参数据为对象  的时候。严格来说,你想在  另一个类中操作另一个类  ,这两个类之间形成了相互依赖关系,  传参的方式叫注入 
  12. 聊聊OPcache
    ​
    我们先看一下 PHP 的执行过程:PHP 初始化执行环节,启动 Zend 引擎,加载注册的扩展模块。
    初始化后读取 PHP 脚本文件,Zend 引擎对 PHP 文件进行词法分析,语法分析,生成语法树。
    Zend 引擎编译语法树,生成 Opcode。
    Zend 引擎执行 Opcode,返回执行结果。
    在 PHP-FPM 模式下,步骤 1 在启动时执行一次,后续的请求中不再执行;步骤 2 3 4每次请
    求都需要执行一遍。2 和 3 生成的语法树和 Opcode ,同一个PHP 脚本每次运行的结果都是一样的。而 OPcache 就是用来缓存 Opcode 的。OPcache#
    OPCache 是 Zend 官方出品的,开放自由的 Opcode 缓存扩展,还具有代码优化功能,省去每
    次加载和解析 PHP 脚本的开销。OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译
    字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。OPCache 缓存的机制主要是:将 PHP 编译产生的字节码以及数据缓存到共享内存中,在每次请求
    ,从缓存中直接读取编译后的 opcode,进行执行。​
  13. swoole和php-fpm区别

php-fpm与swoole - 欢乐豆123 - 博客园

数据库相关:

  1. myisam和innodb的区别?

    作者:oscarwin
    链接:https://www.zhihu.com/question/20596402/answer/211492971
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成
    InnoDB 的重要原因之一;
    2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会
    失败;
    3. InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点
    上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查
    询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都
    会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键
    索引和辅助索引是独立的。
    4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描
    。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很
    快;
    5. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。一个更新语句会锁住整张表
    ,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM变成 InnoDB 的重要原因之一;
  2. mysql用什么手段优化排查?
    参考此文:https://blog.csdn.net/lmfxiaohuo/article/details/126999121
  3. 哪些情况下索引失效?
    导致 MySQL 索引失效的常见场景有以下 6 种:联合索引不满足最左匹配原则。
    模糊查询最前面的为不确定匹配字符。
    索引列参与了运算。
    索引列使用了函数。
    索引列存在类型转换。
    索引列使用 is not null 查询。
  4. binlog日志的作用?
    二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改
    (INSERT、UPDATE、DELETE…)的二进制日志。不会记录SELECT和SHOW这类操作,因
    为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。
  5. 数据库主从怎么搭建、如何同步的、同步延迟分析和解决方案?
    参考此文
    https://blog.csdn.net/qq_39871711/article/details/123494048
  6. 如何保障数据同步性?
    主从复制原理,简言之,分三步曲进行:主数据库有个bin log二进制文件,纪录了所有增删改SQL语句。(binlog线程)从数据库把主数据库的bin log文件的SQL 语句复制到自己的中继日志 relay log(io线程)从数据库的relay log重做日志文件,再执行一次这些sql语句。(Sql执行线程)
  7. 如何保障删库能够恢复到分钟级别?
    需先开启binlog功能,定时任务保存一个全量备份文件当需要恢复到指定的某一秒时,比如某天下午两点发现中午十二点有一次误删表,需要找回数据,那你可以这么做:1、首先,找到最近的一次全量备份,如果你运气好,可能就是昨天晚上的一个备份,从这个备份恢复到临时库;2、然后,从备份的时间点开始,将备份的 binlog 依次取出来,重放到中午误删表之前的那个时刻。这样你的临时库就跟误删之前的线上库一样了,然后你可以把表数据从临时库取出来,按需要恢复到线上库去。
    ————————————————
    版权声明:本文为CSDN博主「乐康女神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_34247523/article/details/113292440
  8. redis数据结构?
    redis的数据结构有以下5种:
    String字符串类型;hash哈希;list列表;set集合;zset有序集合。
  9. memcache和redis区别?
    1)Redis和Memcache的最大区别是,虽然Memcache和Redis都是将数据存储在内存中,
    是内存数据库,但当Redis存储时,并不是所有的数据都一直存储在内存中,而Memcache
    存储时,数据都存储在内存中。2)数据安全问题,由于Memcache把数据全部存在内存之中,当服务器挂掉后,重启服务器
    数据就会丢失,而Redis可以定期保存数据到磁盘中做持久化存储,当需要时可以再加载使
    用。对于灾难恢复,当Memcache挂掉后,数据不可恢复,但Redis数据丢失后可以通过aof
    恢复。3)Redis支持多种数据结构存储,例如list、set、hash等数据结构的存储,而Memcache
    主要是在内存中维护一个统一的巨大的hash表进行存储数据,它只支持简单的key/value类
    型的数据存储,但它可以存储图片、视频、文件及数据库检索结果等。4)数据备份问题,Redis支持数据的备份,即master-slave模式的数据备份。而因为
    Memcache不支持数据持久化,所以无法进行数据备份。5)在内存使用率上,如果使用简单的key-value存储,则Memcache的内存利用率更高,
    而如果Redis采用hash结构来做key-value存储,则由于其组合式的压缩,其内存利用
    率会高于Memcache。具体和应用场景、数据特性有关。
  10. redis数据持久化?
    1、redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。2、RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;3、AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。4、其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。5、如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。
    ————————————————
    版权声明:本文为CSDN博主「热爱编程的五年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/JAVAMysql111/article/details/123171055
  11. 缓存穿透、雪崩解决方案?
    缓存雪崩是指大量的应用请求无法在Redis缓存中进行处理,从而使得大量请求发送到数据库层,导致数据库压力过大甚至宕机。
    第一个原因:同一时间缓存中的数据大面积过期。
    第二个原因:Redis 缓存实例发生故障宕机。
    解决方案:
    1、解决热点数据集中失效均匀过期:给热点数据设置不同的过期时间,给每个key的失效时间加一个随机值;设置热点数据永不过期:不设置失效时间,有更新的话,需要更新缓存;服务降级:业务访问的是非核心数据,直接返回预定义信息、空值或者报错;业务访问核心数据,则允许访问缓存,如果缓存缺失,可以读取数据库。
    2、解决Redis实例宕机问题
    方案一: 实现服务熔断或者请求限流机制
    我们通过监测Redis以及数据库实例所在服务器负载指标,如果发现Redis服务宕机,导致数据库的负载压力增大,我们可以启动服务熔断机制,暂停对缓存服务的访问。
    方案二:事前预防
    通过主从节点的方式构建 Redis 缓存高可靠集群。 如果 Redis 缓存的主节点故障宕机了,从节点还可以切换成为主节点,继续提供缓存服务,避免了由于缓存实例宕机而导致的缓存雪崩问题。--------------------------------------------------------------------------------
    缓存雪崩是因为大面积的缓存失效,打崩了数据库。而缓存击穿是指某个访问非常频繁的热点数据,大量并发请求集中在这一个点访问,在这个Key失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿了一个洞。解决方案:
    1、设置热点数据永不过期:不设置失效时间,有更新的话,需要更新缓存;
    2、加互斥锁:单机可以使用synchronized、lock,分布式可以使用lua脚本。

拓展:

常用的数据加密方式?

数据加密方式有:1、单向加密;2、对称加密;3、非对称加密;4、加密盐;5、散列函数;6、数字签名。1、单向加密通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA。
2、对称加密的加密和解密是使用同一个密钥;加密和解密的速度比较快,效率比较高;但是密钥传输过程不安全,容易破解,而且密钥管理也比较麻烦。算法代表:DES
3、非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密。这两个密钥是数学相关,用某用户密钥加密后的密文,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个密钥性质。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA。
4、加密盐也是比较常听到的一个概念,盐就是一个随机字符串用来和我们的加密串拼接后进行加密。
5、散列函数在密码学中也是不可缺少的一部分。散列函数(hash function)是将任意长度的输入转化为定长输出的算法。谈到散列函数,肯定会想到MD5加密,这种就是一种最为常见的散列函数。
6、数字签名主要是验证数据的真伪。微信通过对称加密生成的签名,支付宝通过非对称加密生成签名。效果差别不大。只要足够证明自己的身份即可。
详细可以参考:https://worktile.com/kb/ask/17850.html

对称与不对称加密?

一: 对称加密: 加密解密使用同一个密钥,被黑客拦截不安全
二:非对称加密:公钥加密,私钥解密。公钥可以公开给别人进行加密,私钥永远在自己手里,非常安全,黑客拦截也没用,因为私钥尚未公开。 著名的RSA加密算法就是用的非对称加密。简单理解:对称加密: A和B传输数据,使用同一个密钥,不安全非对称加密: A和B传输数据, A具有自己的公私钥,B具有自己的公私钥。
(公钥是在公网上公开的,任何人都能看见, 私钥自己保留)A拿着B的公钥+信息数据, 传递给B。 这个时候 , 只有B手里的密钥才能解开。假设C拦截了A传递的信息,他是解不开的, 因为C没有这个公钥对应的私钥。
所以比较安全。
————————————————
版权声明:本文为CSDN博主「咯吱1228」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46034375/article/details/123401591

jwt加密、rsa加密?

概念:全称json wek token 是一种轻量级的身份认证 ,可实现无状态 ,分布式的web应用授权。组成:JWT由三部分组成分别是:header+payload+签名header:头部,通常由两部分信息,  。声明类型:通常为jwt。签名算法:签名部分使用的算法,需要在header中进行定义。payload:负载。这里保存着有效的数据部分。jwt当中实际存储数据的部分。官方规定了7个可以选择的数据。签名部分:通常是整个数据的认证信息,一般根据前面两部的数据,再加上服务的密钥,通过加密算法生    成,用于验证整个数据的完成性。rsa是一种非对称加密,非对称加密是一种“信息公开的密钥交换协议”。非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密。两者可以配合使用,我们可以使用jwt+rsa的方式,由鉴权中心生成私钥,公钥。在授权中心通过私钥生成jwt信息,然后公钥下发给受信任的服务。再使用公钥再服务器端进行鉴权处理。如果通过公钥可以获取到jwt当中信息,说明该用户具有对应的权限。可以进行操作。

nginx与apache的区别?

1.Nginx 配置简洁, Apache 复杂 ;Nginx 静态处理性能比 Apache 高 2倍以上 ;2.Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;Apache 的组件比 Nginx 多 ;3.apache是同步多进程模型,一个连接对应一个进程;Nginx是异步的,多个连接(万级别)可以对应一个进程;4.Nginx处理静态文件好,耗费内存少;动态请求由apache去做,Nginx只适合静态和反向;5.Nginx适合做前端服务器,负载性能很好;Nginx本身就是一个反向代理服务器 ,且支持负载均衡。两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程一般来说,需要性能的 web 服务,用 nginx 。如果不需要性能只求稳定,更考虑 apache ,后者的各种功能模块实现得比前者,例如 ssl 的模块就比前者好,可配置项多。epoll(freebsd 上是 kqueue ) 网络 IO 模型是 nginx 处理性能高的根本理由,但并不是所有的情况下都是 epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的 select 模型或许比 epoll 更高性能。当然,这只是根据网络 IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。更为通用的方案是,前端Nginx抗并发,后端apache集群,配合起来会更好。————————————————
版权声明:本文为CSDN博主「初夏_learning」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_50665872/article/details/125359870

nginx如何实现高并发的?

首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型。
使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器。异步,非阻塞,使用了epoll 和大量的底层代码优化。如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在等待中。而nginx采用一个master进程,多个woker进程的模式。master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求。
同时master进程也负责监控woker的状态,保证高可靠性
woker进程一般设置为跟cpu核心数一致。nginx的woker进程在同一时间可以处理的请求数只受内存限制,可以处理多个请求。
Nginx 的异步非阻塞工作方式正把当中的等待时间利用起来了。在需要等待的时候,这些进程就空闲出来待命了,因此表现为少数几个进程就解决了大量的并发问题。

PHP初中级面试题收集相关推荐

  1. 原 iOS面试题收集

    原 iOS面试题收集 发表于2年前(2013-07-22 13:47)   阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...

  2. 10道C++输出易错笔试题收集

    10道C++输出易错笔试题收集 下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去.我从中选了10道简单的题,C++初学者可以进来挑战下,C++大 ...

  3. 数据库之Oracle笔试面试题收集(来自网络)

    数据库之Oracle笔试面试题收集(来自网络) 问题: 1.解释冷备份和热备份的不同点及各自的优点? 2.解释归档和非归档模式之间的不同和它们各自的优缺点? ********************* ...

  4. 程序员笔试题收集汇总(三)

    相关文章: 程序员笔试题收集汇总(一) http://blog.csdn.net/youyou1543724847/article/details/52383530 程序员笔试题收集汇总(二) htt ...

  5. java高级面试题收集及答案

    2021 java高级面试题收集及答案 以下问题是个人面试时收集,答案纯属个人见解,如有错误请不吝赐教,感激不尽. 这里写目录标题 2021 java高级面试题收集及答案 一级目录 二级目录 三级目录 ...

  6. Java初中级面试题大全

    Java初中级面试题 一.请说出作用域 public, private, protected,以及不写时的区别 回答:这四个作用域的可见范围如下表所示. 说明:如果在修饰的元素上面没有写任何访问修饰符 ...

  7. .NET 初中级面试题

    .NET 初中级面试题 一 二 三 四 五 六 一 有没有做过数据库表设计?现场模拟设计"用户权限"需要的表及其结构: 设计模式有没有了解过?你用过哪些?说一下工厂模式: 说一下什 ...

  8. Android面试题收集

    Android是一种基于Linux的自由及开放源码的操作系统.主要使用于移动设备,如智能手机和平板电脑.由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题, ...

  9. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

最新文章

  1. 外链引入css有哪些方式_引入CSS样式表的方式有哪些?
  2. 使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因
  3. ASP.NET Core WebAPI中的分析工具MiniProfiler
  4. 娱乐化手游营销模式探索
  5. .NET中删除确认框的实现
  6. Linux中出现 -bash: unzip: command not found
  7. 虚拟机安装ubuntu18.04及其srs服务器的搭建
  8. SVM分类器(matlab)
  9. 动态规划算法 dynamic programming
  10. c语言程序设计最后一题调试时闪退,visual studio 2017调试时闪退。
  11. 三菱PLC仿真软件的序列号
  12. 查看zynq 的 id 或者DNA
  13. Android 签名机制 v1、v2、v3
  14. 移动APP开发的三种常见模式
  15. NOJ1635看望朋友
  16. SQL注入-01-什么是SQL注入?
  17. 论文写作——韬ASMI29 algorithm部分语句修改
  18. C++习题:野人与修道士过河问题
  19. 《写给大家看的设计书》(第四版)
  20. ProcessOn思维导图插入LaTeX数学公式初体验

热门文章

  1. 微信小程序scroll-view实现自定义刷新
  2. linux使用spotify/kafka 镜像docker部署 Kafka
  3. 2020年字节跳动面试题
  4. 程序员硬核“Python抢票教程”,帮你抢回家车票(附源码)
  5. linux服务器网卡固件版本,HP服务器redhat操作系统升级网卡驱动的方法
  6. 最新Crack:foxit pdf sdk 8.4.1_win_java
  7. TI CC2530 学习笔记-20-NewBit-CC2530-OLED显示屏
  8. 配置linux开发板ssh登录
  9. 用js html写个抽奖页面,用JS实现简单的网页抽奖
  10. 基因表达数据中信息基因和基因调控网络 第六周报告