面试总结

算法

总体较全链接

https://www.cnblogs.com/fengyumeng/p/10994279.html

》B、B+、B* tree
   B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;
   B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;
   所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;
   B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;
   B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;

具体链接: https://blog.csdn.net/andyzhaojianhui/article/details/76988560

》Hash
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构

具体链接: https://www.cnblogs.com/xiohao/p/4389672.html

》sort
十大经典排序算法
排序算法
冒泡排序(Bubble Sort)
选择排序(Selection Sort)
插入排序(Insertion Sort)
希尔排序(Shell Sort)
归并排序(Merge Sort)
快速排序(Quick Sort)
堆排序(Heap Sort)
计数排序(Counting Sort)
桶排序(Bucket Sort)
基数排序(Radix Sort)

具体链接:https://www.cnblogs.com/AlvinZH/p/8677814.html

》seek
》矩阵
》分布式:cap、一致性哈希

cap:https://blog.csdn.net/w372426096/article/details/80437198

一致性哈希:https://www.cnblogs.com/jajian/p/10896624.html

Linux 命令

》nginx 访问日志指定行数统计:
cat *.log | grep 'url' | wc -l
》去重文件重复行:
uniq
》分隔日志:
spit
》查看日志最后100行:
tail -f -n 100 access.log
》shell脚本接收input变量的 $0 代表什么:
shell脚本的文件名
》查看目录下第一级子目录的磁盘占用情况:
du -h --max-depth=1

Nginx

》restart 与 reload 区别;
reload一般只是从新读取一次配置文件。
restart则是把进程停掉,从头启动一次。
restart自然也就reload了。
但是对于大型服务,restart可能不方便。
》master进程与worker进程区别;
ngnix进程启动启动后会有一个master进程和多个worker进程。


master进程的主要作用:

1.读取并验证配置信息;

2.创建,绑定及关闭套接字;

3.启动,终止worker进程以及维护worker进程的个数;

4.无须终止服务而重新配置工作。

5.控制非中断式程序升级,启用新的二进制程序并在需要的时回滚到老版本。

6.重新打开日志文件。

7.编译嵌入式perl脚本。


worker主要作用:

1.接收,传入并处理来自客户端的连接;

2.提供反向代理及过滤功能;

3.nginx任何能完成的其他任务
》upstream 原生支持的3种分配方式;
1、轮询  
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
upstream backend {
    server 192.168.1.101:8888;
    server 192.168.1.102:8888;
    server 192.168.1.103:8888;
}

2.weight        
轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream backend {
    server 192.168.1.101 weight=1;
    server 192.168.1.102 weight=2;
    server 192.168.1.103 weight=3;
}

3、ip_hash        
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
upstream backend {
    ip_hash;
    server 192.168.1.101:7777;
    server 192.168.1.102:8888;
    server 192.168.1.103:9999;
}

具体链接:https://blog.csdn.net/wangpengfei163/article/details/81661407

MySQL

》使用自增主键的好处
1.自增主键节省存储空间。
2.innodb的索引特性导致了自增id做主键是效率最好的

具体链接:https://www.jianshu.com/p/b8d6d809fce3

》长度大于 255 的varchar
用text类型
》MySQL查询优化:

太多了直接看链接吧

具体链接:

https://zhuanlan.zhihu.com/p/101959564

https://www.nowcoder.com/discuss/150059?type=0&order=0&pos=13&page=0

》Innodb 主键索引与二级(辅助)索引;

太多了直接看链接吧

具体链接:

https://blog.csdn.net/alexdamiao/article/details/51934917

归纳:https://blog.csdn.net/u010841296/article/details/77427175?locationNum=4&fps=1

》B-tree;B+tree;B*tree 比较;
有了
》Innodb 逻辑存储结构;
InnoDB存储引擎的逻辑存储结构和Oracle大致相同,所有数据都被逻辑地存放在一个空间中,我们称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。页在一些文档中有时也称为块(block),1 extent = 64 pages,InnoDB存储引擎的逻辑存储结构大致如图所示。

具体链接,

https://www.jianshu.com/p/fdc5e066433a

https://www.cnblogs.com/wade-luffy/p/6288656.html

》为什么INNODB数据页面中最少存储2条记录?

额。还是看链接吧

https://www.cnblogs.com/bdsir/p/8745553.html

https://www.cnblogs.com/bamboos/archive/2012/11/13/2768375.html

PHP

》PHP 解释型;
》PHP-FPM;
 FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。

它的功能包括:

1.支持平滑停止/启动的高级进程管理功能;

2.可以工作于不同的 uid/gid/chroot 环境下,并监听不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的设置);

3.stdout 和 stderr 日志记录;

4.在发生意外情况的时候能够重新启动并缓存被破坏的 opcode;

5.文件上传优化支持;

6."慢日志" - 记录脚本(不仅记录文件名,还记录 PHP backtrace 信息,可以使用 ptrace或者类似工具读取和分析远程进程的运行数据)运行所导致的异常缓慢;

7.fastcgi_finish_request() - 特殊功能:用于在请求完成和刷新数据后,继续在后台执行耗时的工作(录入视频转换、统计处理等);

8.动态/静态子进程产生;

9.基本 SAPI 运行状态信息(类似Apache的 mod_status);

10基于 php.ini 的配置文件。

具体链接:

https://www.php.net/install.fpm

https://zhuanlan.zhihu.com/p/96911584

》PHP 弱类型实现;引用计数、写时拷贝;
PHP是弱类型,
    动态的语言脚本。在申明一个变量的时候,并不需要指明它保存的数据类型。例如:
    <? php $var = 'Hello World'; ?>


引用计数

    每个php5.5变量都存储在一个叫做zval的变量容器中。

  一个zval变量容器,除了包含变量的类型与值外,还包含两个字节的额外信息:

    1、第一个是“is_ref”,是个bool型,用来标识这个变量是否属于引用集合(reference set),若属于则其值为1,否则为0。

      有个这个变量php引擎就能够将普通变量与引用变量区分开来。

    2、第二个是“refcount”,用来表示指向这个zval变量(符号)的个数。每个符号都有作用域(scope),那些主脚本和函数或者方法也都有作用域。

      所有的符号都存在一个符号表中。

  当一个变量被赋值一个常量值时,就会生成一个zval变量容器,如下例:

    <?php
        $a = "Hello world";
    ?>

  这个时候执行以下程序得到$a变量指向zval容器中的is_ref与refcount值

    <?php
        $a = "Hello world";
        print_r(xdebug_debug_zval('a'));
    ?>

    a: (refcount=1, is_ref=0)='Hello world'

写时复制
    PHP中的写时复制可以简单描述为:
    如果通过赋值的方式赋值给变量时不会申请新内存来存放新变量所保存的值,
    而是简单的通过一个计数器来共用内存,
    只有在其中的一个引用指向变量的值发生变化时才申请新空间来保存值内容以减少对内存的占用。

具体链接

饮用计数:

https://www.cnblogs.com/leezhxing/p/4151784.html

写时拷贝:

推荐看:https://www.php.cn/php-weizijiaocheng-390368.html

https://zhuanlan.zhihu.com/p/26654414

http://www.haonin.com/content/php-copy-on-write-copy-on-write.html

》PHP7 新特性:opcache;命名空间;composer;生成器;SPL;闭包等;
》PHP GC 相关:destruct;循环引用;
引用计数——根缓冲区内数量到达10000——深度优先遍历(refcount-1)——refcount变为0则为垃圾;
不为0则移出缓冲区(先进行refcount+1操作还原);
紫(已加入缓冲区)、灰(已进行-1操作)、白(垃圾标识)、黑(正常变量待移出缓冲区);

》PHP Array -> Hash Table -> Hash冲突;处理Hash冲突常见方式;
链地址法

》PHP 现代框架(Laravel、Yii2)核心设计模式(依赖注入、服务容器);魔术方法、反射等;
》PHP 最好的语言?

Redis
》常用命令
》数据结构列举;SET与ZSET区别;
》缓存穿透、缓存雪崩、缓存击穿;
》key过期删除策略;
》RDB 与 AOF;

Git

Golang
》线程与协程,goroutine 防范泄漏
》map键类型约束,查找过程,碰撞怎么办
》map 并发安全
》new与make区别
》闭包
》切片cap(),扩容方式
》接口变量的 动态值、动态类型、静态类型
》互斥锁解决什么问题
》条件变量用于解决什么问题
》条件变量为什么要基于互斥锁保护下执行
》for sendCond.Wait()为什么用for ?
》原子操作
》waitgroup作用,方法调用顺序,计数周期
》context,withCanel
》go 模块划分(按职责垂直;MVC按层级水平)
》map 与 struct 使用场景
》面向接口、鸭子类型、组合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352