答:JQuery 主要是对对javascript作了封装,使得使用js开发更加高效。 更好的提升项目开发的效率。 主要的封装有:javascript
答:Weblogic 是java的服务器,其实咱们主要是使用weblogic进行系统的部署。 知足业务的开发须要。Weblogic 其实本质是servlet的容器,处理大量的Request或者Response的HTTP请求。对servlet进行管理工做。 servlet的的管理周期通常是,建立,启动,链接,销毁的过程。 WebLogic是美国Oracle公司出品的一个application server。 金融公司比较多使用weblogic主要也是考虑其稳定性和可扩展性。 而且对javaee的大量标准是支持的。 如ejb,servlet/jspphp
答:beanstalkd 是facebook开源的一款基于内存的轻量级的消息处理的中间件。咱们在项目中的使用场景是处理同步lifetime的广告同步数据,这部分数据量比较多,而且对实时性要求不是很高。 因此咱们会专门的消息队列来进行处理。 Beanstalkd 的原理机制是,采用channel的方式,生成者把消息放入channel中,而消费者能够进行关注和订阅channel,而且能够设置消息的优先级。 这样就可构建起生成者和消费的消息队列。 以前facebook用于该消息中间件处理950w用户的应用服务。css
答:logstash 是一个很是优秀的日志采集组件。 咱们的使用场景是将不一样服务器的nginx 报错日志经过logstash 统一采集,而且写入到数据库中。 logstash 的实现机制是采集增量的获取日志信息,而且能够设置必定的规则条件,把这些日志信息加载到内存中进行过滤和筛选处理,而后能够输出制定的格式,而且也提供相应的接口。 咱们是使用mysql的数据库进行处理。html
答: Redshift是亚马逊很是优秀的列式存储的数据库。 它对于大数据的查询和存储都提供了很是好的性能。 尤为是对于大表直接的关联索引性能很是好。 Redshift 处理大表的机制主要是把大表直接的执行解析成SQL语法树,而根据语法树木生成大量的执行任务。 而Redshift的执行器自己是分布式机制。能够把任务分配给不一样的节点,而不一样的计算后的统一结果汇总进行计算。 因此Redshift也是很是耗费内存的处理。 可是执行的效率很是的高。前端
Redshift能够轻松自动执行大多数常规管理任务,以管理、监控和扩展数据仓库。经过处理全部这些耗时耗力的任务,Amazon Redshift 使您获得了解脱并专一于您的数据和业务。java
答: PHP 4.x这个版本以前没有使用到,我使用的早期版本是php5.2.x, 使用了glob来查找全局类文件的过滤,在5.4中安全模式和一些python
Mysql 的版本特性变化mysql
答:HEARDOC其就是一个代码块。 里面会忽略单引号或者双引号,可是不会忽略变量的值。 在解析代码块的时候进行判断,把引号保留,对于变量进行替换解析。linux
答:configure 是对php的一些配置,包括php的bin路径,php.ini文件还有php的根目录的配置。 这样在编译和执行php源码或者扩展的时候能够直接使用configure来操做。还有一些编译的条件,如编译内存的限制,使用的线程nginx
答:int :8字节, char :1字节, varchar : 可伸缩的定义大小,最大65535, datetime : text :65535(2的16次方) 固定的大小 mediumtext 2的24次方, longtext 2的32次方 timestamp : 自动存储记录修改时间 datetime: 日期时间 '2008-12-2 22:06:44'
两种不一样的标准规范,一种是IEEE(电气电子协会一套),另一套是perl核心库中支持的。
答:这个在php5.3进行移除了。 safe_mode 主要是避免一些重要对目录或者对system可以操做的权限。 还有一些禁用的函数。
答:若是产生死锁。
$ppid = posix_getpid();
$pid = pcntl_fork();
if($pid == -1) //父进程
{
exit("create sub process fail!");
}else if($pid >0)
{
echo "My process id :".$pid;
}else{
$cpid = posix_getpid();
echo "my child process:".$cpid;
}
复制代码
答:xdebug 是php的调试扩展工具,客户端发送http请求/或者命令行的CLI请求,xdebug会监听请求的socket的端口和请求的地址信息,而后检查breakpoint,断点的具体位置,而后解析加载到内存的块的变量信息和方法区的信息。 而且显示在IDE出来。 每一步执行都会从新把内存区的变量信息用IDE进行打印出来。
apc: php加速缓存,能够把php的代码的字节码文件缓存起来,并能够设定失效的时间,若是php的过时时间没有到,则这个缓存没有失效。 这样能够提高线上环境的性能。一样的在开发环境很容易形成代码执行无效的状况。
eAccelerator : 也是加速缓存,跟进动态内容进行缓存的操做。 php加速器,优化和动态内容缓存,提升了php脚本的缓存性能,
Xcache :字节码缓存机制。 这意味着他可以提升您服务器上的 PHP 性能. 他经过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 可以直接使用缓冲区已编译的代码从而提升速度. 一般可以提升您的页面生成速率 2 到5 倍, 下降服务器负载.
答:常见的排序算法有多种:(对于最小值进行作标记,若是有比它更小的,就进行插入)
答:Session 是为了解决http协议的无状态的状况提供的一种方案。 http有cookie,可是cookie存储在本地,这样很容易产生数据的丢失,这样就须要一个存储到服务器的东西,方便http进行请求的时候来识别该用户是已经登陆了。 还在线的状态。 Session 就是会话,就是保持到服务器,这样每次请求的时候须要检查这个会话是否存在,存在表示这个用户已经登陆了。 不然用户进行从新的登陆。
在大型网站中,session的产生会很是多,而且须要保证的session可靠。 通常会对session进行分布式管理。 session应用的时候要主要设置session的过时时间和在一些不一样的应用场景关闭或者登出的时候都可以关闭会话。 常见的方案有:
答: SSO就是单点登陆的机制。机制:子系统跳到统一的验证服务器,对帐号和密码验证后会返回一个惟一标识码和这个用户的帐号,而后子系统会把这个标识码和帐号进行存储(session的存储)。 若是用户在子系统登出这回销毁session,并通知sso服务器session key 过时。 用户从新登陆后有能够从新获取session的信息。 用户有了session key 或者叫ticket 就能够到支持该平台的全部应用进行登陆。 而全部的接入的系统也会优先查询下这个用户的ticket是否失效,是否存在。
答:这是典型了map reduce的思路。
答: 堆分为最大堆和最小堆的方式。 最大堆排序:左边大于右边, 父节点大于子节点。 因此每次从父节点进行比较,若是比它小就自动向下找,若是比它大就进行拆堆,当前的节点当作父节点,父节点变成左节点这样递归来拆分。
最小堆排序:根节点的值最小。 最左边的节点最大。 因此元素的查找从最左边查找,直到查找到须要的节点元素。
答: http1.0 和http1.1的区别。 http1.0 主要仍是创建链接。相对http1.1来讲没有缓存的处理。这样会耗费大量的链接消耗。 http1.1还支持keepalive ,长链接机制。 除了上面的区别还增长了,host的域处理。
答:uptime 或者top出现了负载值的状况。 这个值的来源有1分钟,5分钟,15分钟统计的结果。 这个负载值是进程在指定时间内等待的长度。 进程的队列的条件(处于等待的状态):
答:ssh 是安全的xshell机制,主要仍是方便远程登陆,它是简单来讲采用SSL加密传输。它支持的通讯方式包括帐号和密码进行socket的链接服务,也支持基于RSA非对称加密的方式进行处理。 主要是创建服务器链接的机制。 ssh 安全协议支持两种方式:
其实https是在这个ssh加密的方式上作了扩展,支持了第三签名也就是CA. 而证书的颁发也是第三方请求后发送的。 浏览器对证书的可靠性进行验证。 看是否来于合法的二级加密算法中。
答:ssh1.x 在加密算法上存在一些漏洞,因此后期升级到ssh2,如今主要仍是使用ssh2来进行加密的操做。
答:session 和cookie在以前的地方已经提到,这里就再也不赘述。那如何解决session的跨域共享的问题呢? session的跨域共享能够经过造成session的独立服务器,这样全部的session都由通用的服务器进行管理,或者构建出恒sso的单点登陆的验证服务器来解决不一样域名的访问都是正常的。
最好的仍是由通用的受权中心进行验证和管理session的登陆机制。
答:PHP的垃圾回收机制是根据时间来处理的。 在php5.2版本的时候垃圾回收机制采用了引用计数器,这个计数器的思路很是简单,对于应用的变量或对象都会记录一次,当引用的计数器的数量为0时就清理该对象的应用。 可是这种计数器的方式很容易产生不少计数器的堆积。 基于此,使用了IBM的一套算法进行改进,思路以下:
答: PHP 咱们经常使用的运行模式有这同样一些:
答:
答:方法一:在从库添加字段,而后切换成为主库。 方法二:创建一张临时表,把表结构和索引复制。最后把增量的数据根据移过来。 方法三:停服更新
答:explain 能够显示sql的索引状况,显示sql命中的统计数据,而optiwozer_trace能够查看到每条sql执行和解析的过程,能够方便sql执行的调试操做。这种的状况对于复杂sql的组合操做仍是很是的重要的。
答:分表和分库主要是对业务的拆分,把一个大的业务体系不断的拆分红小的数据库和不一样的表。对于怎么来拆分库和拆分表,须要考虑场景。咱们拆分表主要是根据时间,也有根据用户,时间,广告帐号等条件来拆分的。 数据的拆分也是把核心库和非核心库拆分,这样核心库的io不会受到非核心库的大量产生阻塞做用。
怎么来解决增表和减表的操做。这个要看具体的场景。若是咱们以前在分表的时候创建的逻辑数据库访问层的话。那么须要调整逻辑策略和数据库的迁移。 举个例子, 若是是根据时间来增长表,如每一年一个表,那么要增长表的时候,能够定时任务,提早建立两张表结构,若是是要删除表,那么能够把表进行归档。并废弃表。
除了时间分表,还能够基于用户的ID来+时间来拆分,如2018年用户ID后两位是01做为一张表,这样一年就有100张表进行存储。一张表能够存储1kw的时候,那么这样的分表策略能够支持一年1亿条数据的存储。
答:一致性hash算法是memcached集群使用的算法结构方式,他使用的方式是采用hash映射的方式,把2的32次方的hash节点映射成memcached沛泽集群。而且集群的memcahe须要解决集群中的问题。包括,单一性原则即便增长和删除节点均可以共享到数据;,平衡的原则保证,还有就是负载的原则,保证不一样节点分配的存储的节点内容是负载是均衡的。
一致性hash能够来解决这类的问题,主要的思路:不一样的节点的增长和删除hashkeyi会顺时针的迁移。其实一致性的hash充当是一个逻辑的分配。hash对物理的节点创建了虚拟的复制节点,能够访问节点的有副本。若是节点挂掉了会把复制节点的内容进行顺时针的迁移操做。
答:这个须要使用liunx的命令操做。
答: 线程是进程中的一部分,他们的本质都是操做系统的任务,不过线程的的开启和关闭的资源消耗低于进程。一个进程能够开启多个线程进行处理。 相对来讲,进程更加的稳定和高效。 进程有本身的地址空间和资源,进程之间是相互独立的,而线程之间是能够相互的访问的,也能够获取进程的共享资源。线程之间能够互相影响存在不稳定的状况,检测起来也比较麻烦。因此对资源消耗大的优化能够采用线程,反之对于稳定性高的可使用进程来处理。
答:秒杀系统,这种场景随处能够见到。有春运抢票,抢红包。 主要须要考虑的几个点:
答:PHP增长了跟js同样的事件回掉机制。这样的好处在于,代码执行完成后,能够经过回掉机制进行异步提交,不须要等待提升效率。 其实异步回掉机制机制主要是把回掉函数封装成对象传入,当知足条件后,就能够直接调用其回掉机制的方法进行处理了。
而异步回掉机制机制最后仍是依赖于操做中系统中的异步事件的注册,而后系统会检查是否存在知足条件的事件,若是知足就直接调用这个事件进行处理。
答:RESTful是轻量级的http服务架构,它对http进行了封装,支持轻量级的调用和处理。包括对get,post ,put ,delete的支持,而且还支持了统一资源的路由方式,能够直接经过ID获取对象的资源。使得http的请求更加简单和方便。 restful把互联网看成资源池,经过uri的资源能够获取任何的资源。restful其实把整个网站做为软件,restful就是一种资源表现转换的一种架构风格。
答:模版引擎,咱们是处处可见,常见的html本质上就是一个前端渲染模版。而咱们讨论的版本引擎更多的是动态语言或者自定义语言封装的模版引擎。如PHP view,smarty ,vectoty,这些模版首先会制定本身的模版渲染语法,常见的包括解析器的if,for switch等。从而能够更快的渲染输出结果。
答:中间件自己是解决必定场景的问题的工具,通常跟具体的业务关系不大。如redis能够做为消息中间件,解决消息发布和消费的过程。
中间的原理提供统一的输入和输出的接口,而后提供中间的配置,能够接入业务系统,方便总体业务的对接。
中间件主要是在应用和操做系统层之间的调用,中间件须要解决平台化和消息通讯,这样通常要支持分布式的处理。如分布式消息中间件,分布式事务中间件,还有其余的事件处理。
中间件整体来讲是解决多操做系统的复杂接口的封装,提供统一的,标准的调用接口。极大的提升的开发的效率和解决了不一样的操做系统和不一样的组建之间的消息通讯的处理机制。
答:常见的设计模式包括,单例模式,工厂模式,适配器模式,还有模版模式,策略模式。这些模式都是开发中都是常见处理的。单例模式更多的是怎么来处理对象的共享对象的处理,把构造函数私有化,这样统一的建立对象方法能够负责方法的建立。
工厂模式: 负责生产对象。而后消费者,只须要对象的产品的名称,调用工厂对象就能够生产出该对象或者查询已经生产的对象。
适配器模式:咱们常见的是经过插口的方式进行处理。为了知足方法接口的调用,对不能哦使用的对象进行封装,并增长须要知足特性的接口,而后进行接口的调用。
模版模式: 一个抽象类把要作成事情的步骤出来,如把大象装进冰箱里面,能够把找来大象和找来冰箱,而后打开冰箱,最后把大象装进冰箱经过继承的对象进行实现处理。从而实现模版模式。
策略模式:咱们经常使用的人物是应用的算法模式,好比说排序有多种算法,所排序的有的类都实现sort排序的方法,而后经过排序的算法名称就能够实现算法的调用。从而实现
答: 总的设计原则是高内聚,低耦合。 常见的原则包括: 单一性原则,一个类只作一件事情 依赖倒置原则,抽象不依赖于具体的实现。 里氏原则:子类能够替换父类全部的状况。这样父类尽量的设计的简单和抽象。这样子类能够覆盖父类的方法。 接口隔离原则:多个不一样的场景实现,最好把多个接口分开实现进行调用。
接口的开闭原则:对扩张是支持开放的,这样能够扩展其特性,对修改进行关闭,这样内部的修改,通常只有内部本身能够完成修改操做。
答:网络的安全。这个话题真的有点大,我说下我我的的理解。互联网整体来讲是无数的主机经过网络链接在一块儿的。网络的本质就是解决不一样主机之间能够通讯的问题。同时主机之间本质上都是独立的不相认识的。默认的状况主机通讯是没有安全问题,可是随着互联网把人类的生活场景映射到互联网的时候,就容易造成互联网的维护者,另外一方面是破坏者。这样网络的安全问题就诞生了。 常见出现的网络安全问题有:
解决网络的安全问题主要有:
而协议这一块,基本上已经有了成熟的体系了。因此通常是创建在现有的安全协议上通讯。前面两点在现有的体系有人负责处理了。咱们更多的是关注于加密技术和系统监控。 常见的加密有rsa非对称加密,des,aes对称加密,还有散列算法的加密,md5,sha1,sha2. 而系统的监控,能够经过请求的特征分析是否为安全的。包括监控是否存在木马,蠕虫病毒的攻击。
答:mysql的存储优化这里能够从两个角度来讲,一个是基于业务的数据库,表的存储优化,另一个是存储引擎的优化。 从第一种状况来看,mysql数据库存储要根据核心业务和非核心业务拆分,减小非核心业务库都核心库业务的i/o影响。这就是咱们常见的分库。这个须要考虑业务的场景。若是是对表进行优化的话,须要考虑表包含的三个点,表结构,表索引,表数据。能够分别进行考虑,如是否存在废弃的表,废弃的大字段,是否存在存储的大字段的拆分。 而后对表的索引优化,能够基于业务判断,索引是否存在足够的命中,同理索引是否存在大量的冗余等。 表数据的优化主要考虑是否进行表拆分,一个大表拆分红多个表。而后进行业务的使用。具体的拆分都须要跟具体的应用场景来讲看。 另外一个说下对存储引擎优化。咱们经常使用的存储引擎基于事物的innodb,特别是最近的mysql5.5以后重点仍是对innodb的优化。对于innodb的优化主要集中在配置的优化,包括innodb的缓存大小,还有缓缓冲队列的长度调整。具体也须要根据业务的场景来调整。
答:详见,服务器网络编程的5种编程模型的操做。
答:简单聊聊高并发吧,高并发是在单位时间里面可以支撑起流量的请求而且可以进行快速的处理。咱们常见的是用户的请求,或者接口的调用。这些流量的大量的堆积在一块儿,造成流量洪峰。在咱们搞的项目中有几点应对的经验能够聊下:
答:这个已经答了。在关闭这个窗口的时候就没有序列化了。 本质是快速迭代,快速交互,小步快跑。
答:python也是一门脚本语言,而且愈来愈多的搞数学和算法的人选择了这门语言,那为何会出现了,有这门语言。它又相对PHP来讲解决了什么问题呢? 对于PHP的语言整体不是很高,PHP的基础组件不是很完善,而主要仍是针对web的开发,这样在必定程难度上很容易被局限了。
php随着web兴起,对html的标签支持的很是好,可是随着web的兴起和移动互联网对开发的效率提升,天然拉升了对PHP的需求。天然而然的PHP就更多人来开发和管理和使用了。可是PHP随着基础库不够完善和对于其余的web平台的开发就变得不是那么的有竞争力。因此,就能够真正的提升总体的体验。
python随着大数据和人工智能的发展,这门语言变的很是有必要进行开发和使用了。python语言仍是能够尝试学习下,而后进行必定的开发和调试操做。慢慢去解决存在的问题和遇到的问题。
答:python 也是一门脚本语言。 咱们采用的是behave的框架,这种框架是行为驱动的测试场景,很是简单的方式,就是能够把一些测试用例的描述转变成系统的开发测试经验。从而保证系统的执行的效率。因此,能够采用常常的数据库的操做和方式的处理。只须要把测试用例的描述信息转化成behave的制定的语法就能够造成测试。本质就是测试关键字与语法的对应。
答:分布式一致性的算法确认,在不一样的分布式结构过程当中
答:智能合约就是在知足数字协议的条件上进行自动执行合约的操做。
答:冒泡算法整体逻辑
答:插入排序,能够前插入排序,也能够后插入排序。前插入排序主要是
答:快速排序的算法思路:
答:什么是链表?链表就是物理上是分离的,可是逻辑上经过指针连接各个节点的次序。 对链表就是节点的指针,包括头节点,为节点,经过指针进行链接/指向。 class Node{
public $val="";
public $name ="";
复制代码
}
链表是物理上分散,逻辑上是连续的。 就比如,有不少珠子,那根线串起来就是链表。而每颗珠子都记录下一颗珠子的引用。这样就就能够应用的位置找到下一个节点的地址块,已经该节点的地址块元素的值。同理,循环查找或者把地址的位置断开,而后进行衔接。 开始要建立头节点,头节点能够建立元素。next节点能够为null。 咱们采用节点指向的方式来处理。
答:这个是先进后出的,很是适合操做符或者一些变量和释放。
答:先进先出,可使用数组做为队列,采用push,pop的方式进行处理。 也可使用双向链表做为做为队列的机制进行关联和处理。
答:最小堆和最大堆。左边大于右边。进行处理!
答:树的数据结构主要包含了跟节点和叶子结点。这样就构成了树的数据格式。 树的格式包括左节点和右节点。
引用是对对象或者变量进行标识,能够经过标识能够获取地址块。而指针表示真实分配的地址块,是物理内存中能够查看到的。因此使用指针要防止指向的内存地址是否存在,这就是常见的空指针的状况。
其实PHP的回收机制就很大程度上就是根据应用的地址来查看的。