技术面试题
【前端】
1. 简述一下你对HTML 语义化的理解?
用正确的标签做正确的事情。
html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析; 即使在没有样式CSS 情况下也以一种文档格式显示,并且是容易阅读的;
搜索引擎的爬虫也依赖于HTML 标记来确定上下文和各个关键字的权重,利于SEO; 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
2..js 有哪些内置对象?
数据封装类对象:Object 、Array 、Boolean 、Number 和 String
其他对象:Function 、Arguments 、Math 、Date 、RegExp 、Error
3. 你如何对网站的文件和资源进行优化? 期待的解决方案包括:
文件合并
文件最小化/文件压缩
使用CDN 托管
缓存的使用
4.http 状态码
200(OK ),表示请求成功,请求所希望的响应头或数据体将随此响应返回。 301(Moved-Permanently ),永久性重定向
302(Moved-Temporarily ),暂时性重定向
403(Forbidden ),服务器已经理解请求,但是拒绝执行它。
404(Not-Found ),请求的资源没有被找到
500(Interval Server Error),服务器内部错误
5. 你能描述一下当你制作一个网页的工作流程吗?
1)根据需求,确定主题。透彻深入所做网站的核心功能和关键。
2)收集资料。从对比相同类型的网站(惯用而熟悉的样式,用户更乐意接受),参照别人可行的实现方法。
3)规划网站。抽离出类似的模块和可重用的部件。如果是响应式网站就需要设定断点,根据不同宽度屏幕设定样式。
4)设计数据库。
5)搭建基本的框架。引入重置样式表reset.css 和字体样式表font.css ,风格统一的图标还有后台需要用到的包。
6)编码和调试。注意统一命名和编码规范。当多人开发时,还需要制定规范文档。
7)上传测试。利用FTP 工具,把网站发布到自己申请的主页存放服务器上。网站上传以后,你要在浏览器中打开自己的网站,逐页逐个链接的进行测试,发现问题,及时修改,然后再上传测试。
8)推广宣传 。不断宣传,提高网站的访问率和知名度。推广的方法有很多,例如到搜索引擎上注册、与别的网站交换链接、加入广告链等。
【java 】 1. 简述一下你了解的设计模式。
答:所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便的复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
面试被问到关于设计模式的知识时,可以拣最常用的作答,例如:
- 工厂模式:工厂类可以根据条件生成不同的子类实例,这些子类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作(多态方法)。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
- 代理模式:给一个对象提供一个代理对象,并由代理对象控制原对象的引用。实际开发中,按照使用目的的不同,代理可以分为:远程代理、虚拟代理、保护代理、Cache 代理、防火墙代理、同步化代理、智能引用代理。
- 适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起使用的类能够一起工作。
- 模板方法模式:提供一个抽象类,将部分逻辑以具体方法或构造器的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法(多态实现),从而实现不同的业务逻辑。
除此之外,还可以讲讲上面提到的门面模式、桥梁模式、单例模式、装潢模式(Collections 工具类和I/O系统中都使用装潢模式)等,反正基本原则就是拣自己最熟悉的、用得最多的作答,以免言多必失。
答: - 饿汉式单例 public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } }
懒汉式单例 public class Singleton { private static Singleton instance = null; private Singleton() {} public static synchronized Singleton getInstance(){ if (instance == null) instance = new Singleton(); return instance; } }
23、抽象类(abstract class)和接口(interface )有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private 、默认、protected 、public 的,而接口中的成员全都是public 的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
答:Static Nested Class是被声明为静态(static )的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化 2、用Java 写一个单例类。
1. 面向对象软件开发的优点:
代码开发模块化,更易维护和修改;代码复用;增强代码的可靠性和灵活性;增加代码的可理解性。
2. 使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。
3. 抽象和封装的不同点
抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。
4. 什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
5. 进程和线程的区别是什么?
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
6.Java 中垃圾回收有什么目的?
垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。
7. 用最有效率的方法计算2乘以8?
2
8. 构造器(constructor )是否可被重写(override )?
构造器不能被继承,因此不能被重写,但可以被重载。
9. 是否可以继承String 类?
String 类是final 类,不可以被继承。
10.List 、Set 、Map 是否继承自Collection 接口?
List 、Set 是,Map 不是。Map 是键值对映射容器,与List 和Set 有明显的区别,而Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List 是线性结构的容器,适用于按数值索引访问元素的情形。
【MySql 】
1. 数据库优化的思路(大方面)
1)SQL 语句优化
2)2. 索引优化
3)数据库结构优化
4)服务器硬件优化
2. 如何知道表内行数?
select count(*) from 表名;
3. 游标是否只能用于存储过程?
是
4. 什么支持触发器,社么不支持触发器?
只有表支持触发器,视图不支持触发器
5. 什么是数据库的事务,事务有哪些特性?
数据库事务是指逻辑上的一组sql 语句,组成这组操作的各个sql 语句,执行时要么成功要么失败
数据库事务:具有原子性、隔离性、持久性、一致性
【维护】
1.Internet 的网络拓扑结构是一种什么结构?
网型。
2. 文件系统中,文件按名字存取是为了什么?
方便用户的使用
3. 能使系统中多台计算机相互协作完成一件任务的操作系统是什么?
分布式操作系统
4. 常见的路由选择协议,以及它们的区别
常见的路由选择协议有:RIP 协议、OSPF 协议。
RIP 协议:底层是贝尔曼福特算法,它选择路由的度量标准(metric) 是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF 协议:底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
5.. 子网掩码的作用
子网掩码只有一个作用,就是将某个IP 地址划分成网络地址和主机地址两部分。 用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。
6.HTTP 中,POST 与GET 的区别
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
【其他】
1. 简述同步和异步的区别
同步是阻塞模式,异步是非阻塞模式。
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
2. 浏览器的内核分别是什么?
IE: trident内核
Firefox :gecko 内核
Safari :webkit 内核
Opera :以前是presto 内核,Opera 现已改用Google Chrome的Blink 内核
Chrome :Blink(基于webkit ,Google 与Opera Software共同开发)
3.TCP 和UDP 的区别?
TCP 提供面向连接的、可靠的数据流传输,而UDP 提供的是非面向连接的、不可靠的数据流传输。TCP 传输单位称为TCP 报文段,UDP 传输单位称为用户数据报。TCP 注重数据安全性,UDP 数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
4. 网络按使用者分类为:
公共网和专用网。
技术面试题
【前端】
1. 简述一下你对HTML 语义化的理解?
用正确的标签做正确的事情。
html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析; 即使在没有样式CSS 情况下也以一种文档格式显示,并且是容易阅读的;
搜索引擎的爬虫也依赖于HTML 标记来确定上下文和各个关键字的权重,利于SEO; 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
2..js 有哪些内置对象?
数据封装类对象:Object 、Array 、Boolean 、Number 和 String
其他对象:Function 、Arguments 、Math 、Date 、RegExp 、Error
3. 你如何对网站的文件和资源进行优化? 期待的解决方案包括:
文件合并
文件最小化/文件压缩
使用CDN 托管
缓存的使用
4.http 状态码
200(OK ),表示请求成功,请求所希望的响应头或数据体将随此响应返回。 301(Moved-Permanently ),永久性重定向
302(Moved-Temporarily ),暂时性重定向
403(Forbidden ),服务器已经理解请求,但是拒绝执行它。
404(Not-Found ),请求的资源没有被找到
500(Interval Server Error),服务器内部错误
5. 你能描述一下当你制作一个网页的工作流程吗?
1)根据需求,确定主题。透彻深入所做网站的核心功能和关键。
2)收集资料。从对比相同类型的网站(惯用而熟悉的样式,用户更乐意接受),参照别人可行的实现方法。
3)规划网站。抽离出类似的模块和可重用的部件。如果是响应式网站就需要设定断点,根据不同宽度屏幕设定样式。
4)设计数据库。
5)搭建基本的框架。引入重置样式表reset.css 和字体样式表font.css ,风格统一的图标还有后台需要用到的包。
6)编码和调试。注意统一命名和编码规范。当多人开发时,还需要制定规范文档。
7)上传测试。利用FTP 工具,把网站发布到自己申请的主页存放服务器上。网站上传以后,你要在浏览器中打开自己的网站,逐页逐个链接的进行测试,发现问题,及时修改,然后再上传测试。
8)推广宣传 。不断宣传,提高网站的访问率和知名度。推广的方法有很多,例如到搜索引擎上注册、与别的网站交换链接、加入广告链等。
【java 】 1. 简述一下你了解的设计模式。
答:所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便的复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
面试被问到关于设计模式的知识时,可以拣最常用的作答,例如:
- 工厂模式:工厂类可以根据条件生成不同的子类实例,这些子类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作(多态方法)。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
- 代理模式:给一个对象提供一个代理对象,并由代理对象控制原对象的引用。实际开发中,按照使用目的的不同,代理可以分为:远程代理、虚拟代理、保护代理、Cache 代理、防火墙代理、同步化代理、智能引用代理。
- 适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起使用的类能够一起工作。
- 模板方法模式:提供一个抽象类,将部分逻辑以具体方法或构造器的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法(多态实现),从而实现不同的业务逻辑。
除此之外,还可以讲讲上面提到的门面模式、桥梁模式、单例模式、装潢模式(Collections 工具类和I/O系统中都使用装潢模式)等,反正基本原则就是拣自己最熟悉的、用得最多的作答,以免言多必失。
答: - 饿汉式单例 public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } }
懒汉式单例 public class Singleton { private static Singleton instance = null; private Singleton() {} public static synchronized Singleton getInstance(){ if (instance == null) instance = new Singleton(); return instance; } }
23、抽象类(abstract class)和接口(interface )有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private 、默认、protected 、public 的,而接口中的成员全都是public 的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
答:Static Nested Class是被声明为静态(static )的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化 2、用Java 写一个单例类。
1. 面向对象软件开发的优点:
代码开发模块化,更易维护和修改;代码复用;增强代码的可靠性和灵活性;增加代码的可理解性。
2. 使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。
3. 抽象和封装的不同点
抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。
4. 什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
5. 进程和线程的区别是什么?
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
6.Java 中垃圾回收有什么目的?
垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。
7. 用最有效率的方法计算2乘以8?
2
8. 构造器(constructor )是否可被重写(override )?
构造器不能被继承,因此不能被重写,但可以被重载。
9. 是否可以继承String 类?
String 类是final 类,不可以被继承。
10.List 、Set 、Map 是否继承自Collection 接口?
List 、Set 是,Map 不是。Map 是键值对映射容器,与List 和Set 有明显的区别,而Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List 是线性结构的容器,适用于按数值索引访问元素的情形。
【MySql 】
1. 数据库优化的思路(大方面)
1)SQL 语句优化
2)2. 索引优化
3)数据库结构优化
4)服务器硬件优化
2. 如何知道表内行数?
select count(*) from 表名;
3. 游标是否只能用于存储过程?
是
4. 什么支持触发器,社么不支持触发器?
只有表支持触发器,视图不支持触发器
5. 什么是数据库的事务,事务有哪些特性?
数据库事务是指逻辑上的一组sql 语句,组成这组操作的各个sql 语句,执行时要么成功要么失败
数据库事务:具有原子性、隔离性、持久性、一致性
【维护】
1.Internet 的网络拓扑结构是一种什么结构?
网型。
2. 文件系统中,文件按名字存取是为了什么?
方便用户的使用
3. 能使系统中多台计算机相互协作完成一件任务的操作系统是什么?
分布式操作系统
4. 常见的路由选择协议,以及它们的区别
常见的路由选择协议有:RIP 协议、OSPF 协议。
RIP 协议:底层是贝尔曼福特算法,它选择路由的度量标准(metric) 是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF 协议:底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
5.. 子网掩码的作用
子网掩码只有一个作用,就是将某个IP 地址划分成网络地址和主机地址两部分。 用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。
6.HTTP 中,POST 与GET 的区别
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
【其他】
1. 简述同步和异步的区别
同步是阻塞模式,异步是非阻塞模式。
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
2. 浏览器的内核分别是什么?
IE: trident内核
Firefox :gecko 内核
Safari :webkit 内核
Opera :以前是presto 内核,Opera 现已改用Google Chrome的Blink 内核
Chrome :Blink(基于webkit ,Google 与Opera Software共同开发)
3.TCP 和UDP 的区别?
TCP 提供面向连接的、可靠的数据流传输,而UDP 提供的是非面向连接的、不可靠的数据流传输。TCP 传输单位称为TCP 报文段,UDP 传输单位称为用户数据报。TCP 注重数据安全性,UDP 数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
4. 网络按使用者分类为:
公共网和专用网。