啥玩意都有 新看的知识

后端面试进阶指南目录 https://xiaozhuanlan.com/topic/2167809435  

小林coding:https://www.cnblogs.com/xiaolincoding/ 强烈推荐

微信扫码登录原理解析

在数据库中,视图有什么用?什么时候需要用到视图?

C++浅拷贝与深拷贝

  •      系统默认是浅拷贝,当数据成员没有指针时,其实就是没有内存资源时,浅拷贝是可行的;但有指针时,用浅拷贝会使两个类中的两个指针指向同一个地址,当对象快结束时,会调用两次析构函数,使指针悬空。
  •      深拷贝时会把开辟新内存把指针指向的对象也拷贝出来。

       A(const A& _A) : size(_A.size){

              data = new int[size];

       } // 深拷贝

软连接与硬链接

  • 硬链接:硬链接与源文件都指向同一个inode,是文件的不同入口,想要删除文件需要把所有硬链接和源文件都删除。对目录不能创建硬链接。
  • 软连接:windows的快捷方式就是软连接,软连接是创建个新的inode,存着一个block,block存着源文件路径名,是和源文件不同的文件,文件类型也不同。如果源文件没了,软连接依然存在,只是无法访问源文件。

用nullptr不用NULL

  • null在c++中就是无类型的0,而nullptr不是整型类别,也不是指针类型,但能转换成任意指针类型。

从键盘按下字符到它出现在显示器的过程详解 (存疑)

  1. 键盘被按下后,产生了硬件中断信号。
  2. 计算机高级中断控制器(IOAPIC)选择CPU处理核心以及软件中断编号,并发送给中断描述符表(IDT)处理。
  3. 计算机根据IDT选择中断处理函数。
  4. 处理函数处理并通知端口驱动获取按键的信息。
  5. 端口驱动将数据封装,以IRP(I/O request package)形式传递给上层处理程序。
  6. 等待输入的进程获得数据,处理并交给目标进程。
  7. 目标进程显示输入。

另个解释:https://blog.csdn.net/bingjing12345/article/details/7830710

TCP 和 HTTP 中的 KeepAlive 机制总结:

https://xie.infoq.cn/article/398b82c2b4300f928108ac605

SEND和RECV优缺点

如果 SYN 半连接队列已满,只能丢弃连接吗?

https://www.cnblogs.com/xiaolincoding/p/12995358.html

这里给出几种防御 SYN 攻击的方法:

  • 增大半连接队列;
  • 开启 tcp_syncookies 功能
  • 减少 SYN+ACK 重传次数:加快处于 SYN_REVC 状态的 TCP 连接断开。

InnoDB与MyISAM有哪些区别呢? 

https://blog.csdn.net/qq_41453285/article/details/107813140

 

如何用通俗易懂的话来解释非对称加密?

 https://www.zhihu.com/question/33645891
 

联合索引

https://segmentfault.com/a/1190000015416513

Utf8编码

话说进程和线程

https://www.bilibili.com/video/BV1H541187UH?from=search&seid=692598712846930104

https://www.bilibili.com/video/BV1KD4y1U7Rr?from=search&seid=7668303275125709327

进程:进程控制块pcb  pcb有个指针,存储当前进程页目录的物理地址,页目录里存着指针,指向页表,页表存储着物理内存页的起始地址。两级页表可以寻址1024*1024*4KB = 4GB 内存空间大小。线性地址32,10位是在页目录中选择一个页表,10位在页表中选择一个物理内存页,12位是物理内存页的偏移量。

进程先向操作系统申请内存地址,linux中通过进程对应的task_struct找到记录内存分配的链表,每个链表记录该进程已经分配的一段连续内存地址空间。但真正进行映射要到进程访问这段内存时才会进行。Cup中的内存管理单元(MMU)负责线性地址到物理地址转换,该进程页目录的物理地址会保存到特定的寄存器,cup会把已经转换的地址关系存放在TLB中,需要转换地址时先去tlb查找,找不到去查页表写入tlb。切换进程时,页目录地址会改变,之前的TLB缓存会失效需要重新查询页表,这也是进程切换代价比较高的一个重要原因。

而线程共享进程的虚拟地址空间,tlb缓存不会失效。

进程拥有的资源包括:内存空间中的代码、数据等;I/O 资源;文件;处理机等。

线程资源:线程控制块tcb  

为何引入进程:为了程序的并发执行

四个范式

Mysql的MyISAM与innoDB

  • Innodb是数据和索引不分离的,myisam是索引存放的是数据的地址。
  • Innodb要有主键,sam可以没有。
  • Innodb有行级锁,支持事务,支持外键
  • Myisam优点是存储空间更大,支持全文索引。

面向报文(udp)面向字节流(TCP)

  • 面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。    DNS 视频面试
  •  面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。  文件传输

Redo log的机制

https://www.jianshu.com/p/336e4995b9b8

分布式储存的哈希一致性:

https://segmentfault.com/a/1190000021199728

分布式存储的一致性 两段提交:

https://segmentfault.com/a/1190000012534071

一篇文章讲透分布式存储

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

什么时候使用指针?什么时候使用引用?什么时候应该按值传递?

https://blog.csdn.net/hbtj_1216/article/details/56843014

通过虚函数表调用虚函数与通过虚函数表(绕过访问权限控制)

https://blog.csdn.net/iicy266/article/details/11906807

原文地址:https://www.cnblogs.com/philo-zhou/p/14469514.html