2017-04-26问题

面试官很厉害,他问了很多问题,今天整理一下。

1、算法,数据结构

2、哈希,哈希为什么那么快,是什么原理

  哈希算法存取之所以快,是因为其 直接通过关键字key得到要存取的记录内存存储位置

 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得
每个关键字key 对应一个存储位置f (key)。查找时,根据这个确定的对应关系找到
给定值key 的映射f (key) ,若查找集合中存在这个记录,则必定在f (key) 的位
置上。
这里我们把这种对应关系f 称为散列函数, 又称为哈希(Hash) 函数。按这个思
想,采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列
表或哈希表(Hash table)。 那么关键字对应的记录存储位置我们称为散列地址。

3、存储过程是什么

一、存储过程:
存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
二、存储过程的优点:
   1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
  2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
  3.存储过程可以重复使用,可减少数据库开发人员的工作量
  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

4、网络编程

5、nginx编码,为什么比较快

为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。 
处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。

Nginx在这方面的优势就在于它的异步非阻塞模型,这意味着Nginx可以通过基于事件的方式同时处理和维护多个请求,而后端就只需要去做逻辑运算,节约了等待时间去处理更多的请求。

6、负载均衡是怎么实现的

负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。目前最常见的负载均衡应用是Web负载均衡。根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询、IP负载均衡和CDN。其中IP负载均衡可以使用硬件设备或软件方式来实现。

服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为:

  • 高性能集群:将单个重负载的请求分散到多个节点进行处理,最后再将处理结果进行汇总
  • 高可用集群:提高冗余单元,避免单点故障
  • 负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。

一般提到的负载均衡(Load Balance),是指实现负载均衡集群。负载均衡实现了横向扩展(Scale Out),避免纵向的升级(Scale Up)换代。

本文中的web负载均衡,特指能够分担web请求(http,https等)的负载均衡技术。

7、SQL,collection为什么比join 快

8、SQL,男性的年龄全部加一

1 update s1 set 
2 s1.number = ((select s2.number from stock as s2 where s2.id = 1)+1) 
3 from stock as s1
4 where s1.id =1

9、HTTP协议

 

 

负载均衡摘自http://blog.csdn.net/zhoudaxia/article/details/23672319

posted @ 2017-04-26 22:16  穿越亚平宁的盛夏  阅读(147)  评论(0编辑  收藏  举报