#每日一道面试题#html
开篇:前端
从今天开始,每日一道面试题,帮助群里的小伙伴们进行面试题辅导提升,还请你们踊跃回复参与其中,针对人群:中级及高级开发人员,同时欢迎大神给与点评或板砖面试
为了表现的我分两篇介绍,分别为偏前端,后端,注意只是偏向不一样算法
每日一道面试题(前端)sql
每日一道面试题(后台)数据库
开始以前我先申明一下:编程
全部面试题的答案均不是惟一的,全部题目的答案都是仁者见智的回答,若是本身之前不知道,能够看一下,知道的,结合本身之前的作个对比吧,以为有问题的,请直接留言或加入QQ群:70895254后端
闲话少说,言归正传,面试题直接上:浏览器
1、请解释进程与线程的区别?进程与程序的区别? (2017-04-05)缓存
答:进程(process)是一块包含了某些资源的内存区域;进程中所包含的一个或多个执行单元称为线程(thread),进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位
1)线程是进程的一部分,因此线程有的时候被称为是轻权进程或者轻量级进程;
2)资源拥有: 系统会进程分配内存区域,可是不会为线程分配内存,线程只能共享资源
3)空间地址:进程是系统全部资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
4)两者能够并发执行
进程和应用程序的区别:
1)进程是程序及其数据在计算机的一次运行活动,是一个运行过程,是一个动态的概念。进程的运行实体是程序,离开程序的进程没有存在的意义。而程序是一组有序的指令集合,是一种静态概念。
2)进程是程序的一次执行过程,它是动态地建立和消亡的,具备必定的生命周期,是暂时存在的;而程序则是一组代码的集合,它是永久存在的,可长期保存。
3)一个进程能够执行一个或几个程序,一个程序也能够构成多个进程。进程能够建立进程,而程序不能造成新的程序。
4)进程和程序的组成不一样。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。
2、简述ASP.NET请求的生命周期?(2017-04-06)
这个自行google或百度吧,太多了,不想写了
3、ORM中的延迟加载与直接加载有什么异同?(2017-04-07)
答:延迟加载(lazy loading)(也称为懒加载),延迟加载机制是为了不一些无谓的性能开销而提出来的,所谓延迟加载就是将对象的初始化延迟,在程序使用该对象时才去初始化。
直接加载(Eager loading)(也成当即加载),直接加载就是在程序初始化时将程序中用到的全部的对象也初始化,这样会下降程序的效率。
简单的理解就是:只在须要的时候才去加载必要的数据,这样能够避免即时加载所带来的没必要要的系统开销
4、值类型和引用类型的区别? (2017-04-10)
答:相同点:引用类型能够实现接口,值类型当中的结构体也能够实现接口;
引用类型和值类型都继承自System.Object类。几乎全部的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.ValueType。System.ValueType直接派生于System.Object. 即System.ValueType自己是一个类类型,而不是值类型。其关键在于ValueType重写了Equals()方法,从而对值类型按照实例的值来比较,而不是引用地址来比较。
不一样点:引用类型存储在托管堆上,值类型一般存储在栈上(引用类型在栈中存储一个引用,实际位置位于托管队);
引用类型与值类型相同的是,结构体也能够实现接口;
引用类型能够派生出新的类型,而值类型不能;
引用类型能够包含null值,值类型不能(可空类型功能容许将 null 赋给值类型);
引用类型变量的赋值只复制对对象的引用,而不复制对象自己。而将一个值类型变量赋给另外一个值类型变量时,将复制包含的值
值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,无论是否已经赋值,编译器为其分配内存。
引用类型(reference type):string 和 class统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并无为其分配堆上的内存空间。当使用 new 建立一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中
PS:从11号-13号小姨子结婚,我休假三天,这三天由未央、娘炮,也然出题并整理答案
5、C#中的委托是什么?事件是否是一种委托?(2017-04-11未央)
答:委托能够把一个方法做为参数代入另外一个方法。委托能够理解为指向一个函数的指针。
委托和事件没有可比性,由于委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。事件的内部是用委托实现的。由于对于事件来说,外部只能“注册本身+=、注销本身-=”,外界不能够注销其余的注册者,外界不能够主动触发事件,所以若是用Delegate就无法进行上面的控制,所以诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove本身,不能赋值。事件只能+=、-=,不能= 。加分的补充回答:事件内部就是一个private的委托和add、remove两个方法
6、默认的Session存在什么问题?如何解决?(2017-04-12未央)
答: session四中存储方式的iis进程,sqlserver,状态服务器,还有一种就是自写程序,默认存储在iis进程中,可是进程奔溃或重启的时候,session会丢失;(欢迎补充)
7、简述ASP.NET的几种页面传值方式? (2017-04-13也然)
答:querystring session cookie application Server.transfer
8、override与重载(overload)的区别?(2017-04-14 )
答:重载是方法的名称相同。参数或参数类型不一样,进行屡次重载以适应不一样的须要。重载(overload)是面向过程的概念。Override 是进行基类中函数的重写。Override是面向对象的概念
9、简述Using语法的做用。(2017-04-14 凉诺)
答:1.引用命名空间 using system.net
2.2.处理非托管对象,保证其正确释放资源;
using( SqlConnection con = new SqlConnection(str) ){
//TODO:your code;
}
10、抽象类和接口的区别和联系?(2017-04-14 凉诺)
答:1)抽象类和接口都不能直接实例化,若是要实例化,抽象类变量必须指向实现全部抽象方法的子类对象,接口变量必须指向实现全部接口方法的类对象。
2)抽象类要被子类继承,接口要被类实现。
3)接口只能作方法申明,抽象类中能够作方法申明,也能够作方法实现
4)接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5)抽象类里的抽象方法必须所有被子类所实现,若是子类不能所有实现父类抽象方法,那么该子类只能是抽象类。一样,一个实现接口的时候,如不能所有实现接口方法,那么该类也只能为抽象类。
6)抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。
7)抽象类里能够没有抽象方法
8)若是一个类里有抽象方法,那么这个类只能是抽象类
9)抽象方法要被实现,因此不能是静态的,也不能是私有的。
10)接口可继承接口,并可多继承接口,但类只能单根继承。
特别是对于公用的实现代码,抽象类有它的优势。抽象类可以保证明现的层次关系,避免代码重复。然而,即便在使用抽 象类的场合,也不要忽视经过接口定义行为模型的原则。从实践的角度来看,若是依赖于抽象类来定义行为,每每致使过于复杂的继承关系,而经过接口定义行为能 够更有效地分离行为与实现,为代码的维护和修改带来方便。
11、在C#中,string str = null 与 string str = “” 请说明其区别。?(2017-04-14 凉诺)
答:String Str="";表示一个空串,被实例化了,占用了内存空间,而String Str=null;但没有分配内存空间,是一个空引用;""分配一个长度为空的存储空间,因此通常用string.Empty,在 C# 中,大多数状况下 "" 和 string.Empty 能够互换使用,断定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length == 0 优于 s == string.Empty 优于 s == "";
12、谈一谈什么是Delegate? (2017-04-17)
答:参考一下吧http://www.cnblogs.com/jackson0714/p/5111347.html
13、如何处理百万条数据的优化? (2017-04-18)
答:能够从如下几个方面入手
(1)减小数据访问(减小磁盘访问)
1.1)正确建立索引
1.2)只经过索引访问数据
1.3)优化SQL执行计划
(2)返回更少数据(减小网络传输或磁盘访问)
2.1)分页:客户端分页、服务端分页、数据库分页
2.2)只返回须要的字段
2.3)减小客户端内存占用
(3)减小交互次数(减小网络传输)
3.1)batch 操做
3.2)设置Fetch Size
(4)减小服务器CPU开销(减小CPU及内存开销)
4.1)使用绑定变量
4.2)合理使用排序
4.3)减小比较操做
4.4)大量复杂运算在客户端处理
(5)利用更多资源(增长资源)
5.1)客户端多进程并行访问
5.2)数据库并行处理
(6)缓存机制
6.1)创建告诉缓存机制
6.2) 若有条件能够所有内存处理
以上自上而下优化成本依次递增
sql优化详细参考:http://www.open-open.com/lib/view/open1389705004242.html
参考:http://blog.csdn.net/libing13820393394/article/details/48634525
14、谈谈你对MVC路由理解? (2017-04-20)
答:MVC是Model—View—Controler的简称。即模型—视图—控制器
MVC基本的处理流程:来了一个URL请求, 从中找到Controller和Action的值, 将请求传递给Controller处理. Controller获取Model数据对象, 而且将Model传递给View, 最后View负责呈现页面。url请求有contriller实现中体现路由机制:通常是由路由名称,路由模式和默认值构成的
一、匹配传入的请求:url Routing的做用是将浏览器的URL请求映射到特定的MVC控制器动做。
二、构造传出的URL,用来响应控制器中的操做:当咱们访问http://localhost:8080/Home/Index 这个地址的时候,请求首先被UrlRoutingModule截获,截获请求后,从Routes中获得与当前请求URL相符合的RouteData对象, 将RouteData对象和当前URL封装成一个RequestContext对象,而后从Requestcontext封装的RouteData中获得 Controller名字,根据Controller的名字,经过反射建立控制器对象,这个时候控制器才真正被激活,最后去执行控制器里面对应的 action。
Routing(路由)的做用
一、匹配传入的请求(不匹配服务器物理文件);
二、将请求映射到 控制器 的具体操做 Action方法 和 参数;
三、调用并执行对应 控制器 类的 Action 方法;
15、ORM实现原理?你经常使用的ORM框架?(2017-04-21)
答:概念:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不一样类型系统的数据之间的转换。
详细介绍:让咱们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎全部的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,咱们是面向对象的。当对象信息发生变化的时候,咱们须要把对象的信息保存在关系数据库中。
当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写很多数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了不少的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来老是重复的。
ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是创建在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。通常状况下,一个持久化类和一个表对应,类的每一个实例对应表中的一条记录,类的每一个属性对应表的每一个字段。
ORM技术特色:
1.提升了开发效率。因为ORM能够自动对Entity对象与数据库中的Table进行字段与属性的映射,因此咱们实际可能已经不须要一个专用的、庞大的数据访问层。
2.ORM提供了对数据库的映射,不用sql直接编码,可以像操做对象同样从数据库获取数据。
.Net经常使用ORM框架: (必须熟悉两种以上的框架,而且能深入理解)
NHibernate
NBear
Castle ActiveRecord
iBATIS.NET
DAAB
EntitysCodeGenerate
EntityFormerWork
Linq to sql
PetaPoco
参考:http://www.cnblogs.com/haofuqi/p/3906777.html
PS:本周的面试题:2017-04-24~2017-05-01
15~40 题目:
1.静态成员和非静态成员的区别?
2.const 和 static readonly 区别?
3.extern 是什么意思?
4.abstract 是什么意思?
5.internal 修饰符起什么做用?
6.sealed 修饰符是干什么的?
7.override 和 overload 的区别?
8.什么是索引指示器?
9.new 修饰符是起什么做用?
10.this 关键字的含义?
11.可使用抽象函数重写基类中的虚函数吗?
12.密封类能够有虚函数吗?
13.什么是属性访问器?
14.abstract 能够和 virtual 一块儿使用吗?能够和 override 一块儿使用吗?
15.接口能够包含哪些成员?
16.类和结构的区别?
17.接口的多继承会带来哪些问题?
18.抽象类和接口的区别?
19.别名指示符是什么?
20.如何手工释放资源?
21.P/Invoke是什么?
22.StringBuilder 和 String 的区别?
23.explicit 和 implicit 的含义?
24.params 有什么用?
25.什么是反射?
参考地址:http://www.cnblogs.com/51pansou/p/5283772.html
两周的面试题: 2017-05-02~2017-05-12
40~50 题目:
排序算法题目
41、冒泡排序(Bubble Sort) (2017-05-01)
42、选择排序(Selection Sort)(2017-05-02)
43、插入排序(Insertion Sort)(2017-05-03)
44、希尔排序(Shell Sort)(2017-05-04)
45、归并排序(Merge Sort)(2017-05-05)
46、快速排序(Quick Sort)(2017-05-08)
47、堆排序(Heap Sort)(2017-05-09)
48、计数排序(Counting Sort)(2017-05-10)
49、桶排序(Bucket Sort)(2017-05-11)
50、基数排序(Radix Sort)(2017-05-12)
十大经典算法:http://www.cnblogs.com/wzhiq896/p/5904891.html
结束语:
面试题万变不离其宗,只要每一道例题都吃透了,通常的面试是没有问题,可是面试除了面试题,口语表达能力也是很是重要的一个环节,固然了这是另一个话题,有时间我在出一个帖子,把你们的面试经历收集一下,整理出来供群内的小伙伴们参考学习;