面试被坑问题记录
1、在Linux/unix中,文件rm命令删除了,但其空间没有被释放,是什么原因?
答:文件删除时使用了结构上(unlink),如果在删除时,有进程正在使用这个文件,哪么另一个进程是照常可以使用这个文件,所以空间不会被释放。解决方法是找使用文件进程,并将期关闭或重启即可,可以使用lsof查看进程使用的文件列表。
2、 mysql自动备份如何实现的?
首先写个shell脚本,调用mysqldump对数据库进行备份,可以使用增量备份,也可以使用完全备份,然后在crontab中增加计划任务,去执行这个脚本就可以了!
3、crontab中的星号分别代表的什么意思
分别代表 分时日月年,如果是星号,代表每时、日、月年进行执行
4、栈和队列是什么,有什么区别?
栈和队列是两种数据结构,栈是先进后出特点,是一种线性数组数据结构。队列是一种先入先出的特点,是一个循环线性数组数据结构。
5、PHP绘图是如何实现的?
PHP绘图是使用的GD类库实现的,可以在php.ini中查看php_gd2组件是否启动,如果启用,可以使用image相关函数进行画图、加载图、保存图了。
6、25%-4的结果是多少?
我当时被蒙住了,尼马被除数是负数怎么计算,平时用电脑计算几十几了,乘法歌都交给老师了!!!结果就是25/-4=-25/4=-6.25;余数就是-1嘛!日了!
7、你们网站中的搜索如何实现的?
答,使用全文索引实现,软件用的sphinx!
8、你在用sphinx的时候,有没有碰到很多词查不到的情况
答:这是sphinx中的词库不全,可以在词库文件中添加相关词和搜狗词库扩充!
9、如何提高sphinx的查询效率
答:使用集群配置和增量索引,这样可以减少主表的操作频率,定期合并即可!
10、sphinx中如何实现按分类查询
答:在sphinx自带操作类中,可以使用SetFilter函数添加查询条件。
11、写一个shell脚本分析日志,去掉IP重复部分
答:awk '!a[$1]++' today.log
12、shell中如何将文件分割
答:split -b 100k today.log 按行分割 split -l 5000 today.log
13、Mysql事务有几个级别?(这是一家电商网站所关注的问题)
答:共享锁分为:脏的、重复读、幻想读、串行读四层,分别用于保护事务间的数据保护级别,另外包括排他锁,用于保护数据读取,可以使用select for update语句添加排他锁,如果有主键,是行锁,如果没有主键则是整表锁。
14、在mysql、redis中,双主库如何实现高可用性切换?
答:可以使用keepalive监控主库的状态,keepalive在检测到主库没有tcp相应则认为主库挂掉,会更改tcp层中的arp表,将vip改为从库的mac地址,从而达到自动切换的目的。
15、分库分表后,如何实现他们的数据查询?
答:通常是按条件查询的,一般解决方案为整理查询表,用于查询使用,并结使使用sphinx全文索引,当然有更高级的解决方案,可以使用多神经系统,如百度的实现模式,实际上是一种多进程线程并发,绘总的一种算法!
16、nginx中rewrite后面的break和last区别
在nginx中,有两个重要标签location和server,server表示一个站点,location表示一个目录。哪么在location中使用rewrite break后在location中解析,rewrite last在server中解析:
last:
重新将rewrite后的地址在server标签中执行
break:
将rewrite后的地址在当前location标签中执行
17、用一个shell命令,将访问最高的IP找出来,前10条(百度、酷狗的面试题)
awk '{name[$1]++ }; END {for (count in name) print count,name[count]}' test|sort -k 2 -rn|head -10