在面试准备中总结的一些面试题

1.单例模式
单例模式的特点是三私一公
三私分别是:私有的静态成员属性,私有的构造方法,私有的克隆方法
私有的成员属性是:保存类的唯一实例
私有的构造方法是:
防止外部程序 new 一个对象从而失去单例的意义
私有的克隆方法:
防止对象被克隆。
使用单例模式的场景:
大家都知道想调用一个类,必须用到 new ,但是每次 new 都会耗费内存资源以及系统资源,并且每次打开和关闭数据库都是对数据库的一种巨大的考验,所以单例模式会经常用到数据库操作中。
2.redis与memcache的异同
memcache运行速度快,并且便于水平扩展,它是把数据存到内存中,每个value值最大限制是2M。
redis是支持持久化缓存,而且也支持缓存多种数据结构,例如:资源型,set,zset,list,哈希,每个value值最大限制是1G,并且是存在磁盘上的,开机关机后可以再次使用,操作都是原子性的,并且可以支持多数据库。
3,session与cookie
每个cookie最多可以存4K,cookie是存在客户端的
Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型,session是存在服务器的
sessionid是存在cookie里面的
4.mysql的主从复制:
从数据库会产生两个线程,一个是I/O线程,另一个是mysql线程
i/o会去请求主数据库的belog日志,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
5.session共享
session共享是因为负载均衡而产生的一种方法,为什么呢。为什么负载均衡是至少二个服务器相互运行,从而造成了session的一方不存在的现象,所以便产生了session共享。
session共享可以分为三种方法,一种是将session存到数据库中,一种是将session存到redis中,另一种则是存到cookie里。
6.支付宝即时到账
支付宝即时到账的最大的特点:便是有两个通知,一个是异步通知,另一个则是同步通知。
同步通知则是前台所显示的一些效果,例如页面显示支付成功等一些通知。
异步通知则是在后台删除库存等一些数据操作。
具体操作以及说明支付宝文档和SDK也有明确写明。
7.负载均衡
负载均衡分为四种:
一种是DNS负载均衡
一种是软负载均衡
一种是硬件负载均衡
一种nginx负载均衡
DNS负载均衡是一种最常见,最简单的负载均衡了,它是按地理级别形成的一种负载均衡
它的优点是:可以支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能;
它的缺点就是:太过耗费IP资源,可能会造成用户访问网址失败。
软负载均衡(不再做详细介绍,自己去查资料)
硬件负载均衡
优点:性能高于软件,并且安全系数较高,而且较为稳定
缺点:就是价格太贵了
nginx负载均衡
Ngnix是一款轻量级的Web服务器/反向代理服务器
nginx负载均衡有常见的几种策略:
             轮询
             加权轮询
             ip_hash
             least_conn  最少连接
8.抽象类与接口类
抽象类与接口类都不能被直接实例化
抽象类只能通过继承使用,并且抽象类里面定义的一些方法,在子类中必须实现。
抽象类的关键字是 abstract (定义抽象类), extends (继承)
接口呢,接口要通过 implements 操作符来实现
类中必须实现接口中定义的所有方法,否则会报一个致命错误。
类可以实现多个接口,用逗号来分隔多个接口的名称。
下面是实例(仅供参考)
<?php
 
// 声明一个'iTemplate'接口
interface iTemplate
{
     public function setVariable( $name , $var );
     public function getHtml( $template );
}
// 实现接口
// 下面的写法是正确的
class Template implements iTemplate
{
     private $vars = array ();
   
     public function setVariable( $name , $var )
     {
         $this ->vars[ $name ] = $var ;
     }
   
     public function getHtml( $template )
     {
         foreach ( $this ->vars as $name => $value ) {
             $template = str_replace ( '{' . $name . '}' , $value , $template );
         }
  
         return $template ;
     }
}
9.mysql的事务回滚
事务回滚通常运用于银行转账:例如一方若没有转入或者转出钱,事务回滚就会把一切回到最初的样子,从而不会造成用户的经济损失。
事务回滚的饿三个关键字:
begin 开始一个事务
rollback 事务回滚
commit 事务确认
下面是实例(仅供参考)
$conn = mysql_connect( 'localhost' , 'root' , 'root' ) or die ( "数据连接错误!!!" );
mysql_select_db( 'test' , $conn );
mysql_query( "set names 'GBK'" ); //使用GBK中文编码;
//开始一个事务
mysql_query( "BEGIN" ); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')" ;
$sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')" ; //这条我故意写错
$res = mysql_query( $sql );
$res1 = mysql_query( $sql2 );
if ( $res && $res1 ){
mysql_query( "COMMIT" );
echo '提交成功。' ;
} else {
mysql_query( "ROLLBACK" );
echo '数据回滚。' ;
}
mysql_query( "END" );
10,git与svn的区别
git有分布式而svn没有
git的分支与svn的分支不同
git没有全局版本号
git保存数据的完整性要强于svn
git是用元数据保存内容的,而svn是用文件保存的
11.mysql的优化
如果查询结果只有一条数据,尽量要用limit 1
要查询某个字段,要精确到select 字段名
要在经常搜索的字段加上索引(索引分为唯一索引,组合索引,主键索引(是特殊的唯一索引,不允许有空值),以及普通索引 )
尽量不要使用order by(排序)
尽量将字段设为 not null
固定长度的表查询更快(char与varchar)
以及采用分区或分表。
12.接口的安全验证
在我的认知方面接口有五种:
一种是公共接口
一种是接口参数加密接口
一种是接口参数加密,时效验证
一种是接口参数加密,时效验证,私钥
最后一种是接口参数加密,时效验证,私钥,https。
13.静态与伪静态
需要先把网站的页面总结出来,分为多少个样式,然后把这些页面做成模板
,生成的时候需要先读取源文件然后生成独立的以.html结尾的页面文件
静态的优点是:
加快了反应的效率
防止了黑客的攻击
方便了搜索的引擎的抓取
缺点是:
占用了太多的空间
不好调试
伪静态:
伪静态的优点是:
使得黑客找不到具体的动态网址,
占用的内存少,
减少url的长度,
维护方便
缺点是:
伪静态文件太多的话会造成cpu的超负荷
14.linux杀死进程
ps -ef| grep 进程名称  获得进程号
kill 进程号         杀死进程
 
 
先写那么多,后期完善!!!         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_青涩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值