文章目录
主要的几门课程已经整理完了,剩下几门支线课程一起汇总在一起了,内容不是很多,包括离散数学、java、jsp、web和软件测试几门,其他的想到了再写吧,感觉内容应该够用了,后续再整理一些前沿的时事相关的知识,请大佬指教
1、对离散数学的理解
离散数学(Discrete mathematics)是研究离散量的结构及其相互关系的数学学科,是现代数学的一个重要分支。
离散的含义是指不同的连接在一起的元素,主要是研究基于离散量的结构和相互间的关系,其对象一般是有限个或可数个元素。
离散数学在各学科领域,特别在计算机科学与技术领域有着广泛的应用,同时离散数学也是计算机专业的许多专业课程,如程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学基础等必不可少的先行课程。通过离散数学的学习,不但可以掌握处理离散结构的描述工具和方法,为后续课程的学习创造条件,而且可以提高抽象思维和严格的逻辑推理能力,为将来参与创新性的研究和开发工作打下坚实的基础
2、java
1面向对象的特征有哪些方面?
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口
(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。实现多态需要做两件事:
1). 方法重写(子类继承父类并重写父类中的方法);
2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)
3、数组有没有length()方法?String有没有length()方法?
答:数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。
4、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;
重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
5、抽象类(abstract class)和接口(interface)有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。
接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。
抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
6、Java支持多继承吗?
Java不支持多继承,每个类只允许继承一个类,但是可以实现多个接口。
7、进程与线程的区别 ?
进程是一个程序的执行(即正在运行的程序)
线程是在进程中独立的执行序列. 一个进程可以包含很多线程. 线程有时被称为轻量级的进程.
8、$(document).ready()方法和window.onload有什么区别?
(1)、window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。
(2)、$(document).ready() 方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。
3、JSP
1、 JSP页面是什么 ?
一个JSP页面是一个文本文档,包含了两种类型的文本:静态数据和JSP元素。静态数据可以以任何一种基于文本的格式表达,比如HTML或者XML。JSP是一种混合了静态内容与动态生成内容的技术。查看JSP例子
2 JSP请求是如何被处理的?
一个JSP请求的到来,浏览器首先以一个jsp扩展的文件名来请求一个页面。然后,Web Server读取到该请求,使用JSP编译器将JSP页面转换为一个servlet类。注意JSP文件只在该页面的第一次请求或者JSP文件已经改变时才编译。生成的servlet类被调用,去处理浏览器的请求。一旦请求处理完,servlet会向客户端返回一个相应。查看如何获取JSP请求中的参数
3. JSP的优势所在?
使用JSP技术有以下优势:
JSP网页被动态的编译,因此开发者很容易更新当前代码。
JSP网页可预编译。
JSP网页能容易的组合成静态模版,包括HTML XML片段,且代码可形成动态内容。
开发者能提供自定义的JSP标签库,且使用类XML语法访问。
开发者可以在组件级别做逻辑上的改变,但是不能使用程序逻辑编辑个别的网页。
4. 什么是指令?在JSP中, 包括哪些不同类型的指令?
指令是JSP引擎所处理的命令,当网页被编译成小程序时,指令用于去设置页面级别的命令,从外部文件插入数据,指定自定义的标签库。指令被包括在<%@ 和%>内。指令的类型分为:
包含指令:用于包含文件,和当用页面合并文件内容。
页面指令:用于定义JSP页面的具体属性,比如错误页面和缓冲池。
标签库:用于声明页面中使用到的自定义标签库。
5. 什么是JSP的actions?
JSP的actions是使用XML语法结构来控制Servlet引擎的行为。JSP的actions是在当JSP页面请求的时候才执行。它们会动态插入一个文件中,再利用JavaBeans的组件,转发给用户到另一个页面,或者生成带Java插件的HTML页面。以下是一些可以操作的actions:
jsp:include- 当JSP页面被请求的时候,包含了一个文件。
jsp:useBean- 寻找或者实例化一个JavaBean。
jsp:setProperty- 设置JavaBean的属性。
jsp:getProperty- 得到JavaBean的属性。
jsp:forward- 转发请求到新的页面。
jsp:plugin- 生成特定浏览器的代码。
6、 什么是隐式对象?他们是什么?
JSP隐式对象是指JSP容器在每页中提供给开发人员的Java对象。开发人员可以直接调用他们,而不需要任何显示声明。JSP隐式对象也被称为预定义变量。以下对象都是在JSP页面中隐式存在的:
application
page
request
response
session
exception
out
config
pageContext
4、web
1、常用那几种浏览器测试?有哪些内核****(Layout Engine)?
1、浏览器:IE,Chrome,FireFox,Safari,Opera。
2、内核:Trident,Gecko,Presto,Webkit。
2、 说下行内元素和块级元素的区别?行内块元素的兼容性使用?(****IE8 以下)
行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。
块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。
兼容性:display:inline-block;display:inline;zoom:1;
(1)行内元素有:a( 锚点) ,b(粗体(不推荐)) ,span(常用内联容器,定义文本内区块) img(图片) input(输入框) select(项目选择) strong(粗体强调) label(表格标签) cite (引用)code(计算机代码)
(2)块级元素有:div ul(无序列表) ol(有序列表) dl(定义列表) table(表格)form(表单) h1 (一级标题))p(段落)pre(预格式化)
(3)常见的空元素:
3、 清除浮动有哪些方式?比较好的方式是哪一种?
(1)父级div定义height。
(2)结尾处加空div标签clear:both。
(3)父级div定义伪类:after和zoom。
(4)父级div定义overflow:hidden。
(5)父级div定义overflow:auto。
(6)父级div也浮动,需要定义宽度。
(7)父级div定义display:table。
(8)结尾处加br标签clear:both。
(Q2) 比较好的是第3种方式,好多网站都这么用。
4、什么是盒子模型?
在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。
5、简述一下src与href的区别
href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。
当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。
6、简述同步和异步的区别
同步是阻塞模式,异步是非阻塞模式。
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
7、介绍一下你对浏览器内核的理解?
主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。
1、渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
2、JS引擎则:解析和执行javascript来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
8、px和em的区别
相同点:px和em都是长度单位;
异同点:px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。
浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。
9、web前端开发,如何提高页面性能优化?
内容方面:
1.减少 HTTP 请求 (Make Fewer HTTP Requests)
2.减少 DOM 元素数量 (Reduce the Number of DOM Elements)
3.使得 Ajax 可缓存 (Make Ajax Cacheable)
针对CSS:
1.把 CSS 放到代码页上端 (Put Stylesheets at the Top)
2.从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)
3.精简 JavaScript 与 CSS (Minify JavaScript and CSS)
4.避免 CSS 表达式 (Avoid CSS Expressions)
针对JavaScript :
- 脚本放到 HTML 代码页底部 (Put Scripts at the Bottom)
- 从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)
- 精简 JavaScript 与 CSS (Minify JavaScript and CSS)
- 移除重复脚本 (Remove Duplicate Scripts)
面向图片(Image):
1.优化图片
2 不要在 HTML 中使用缩放图片
3 使用恰当的图片格式
4 使用 CSS Sprites 技巧对图片优化
10、html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
1、HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
(1)绘画 canvas;
(2)用于媒介回放的 video 和 audio 元素;
(3)本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
(4)sessionStorage 的数据在浏览器关闭后自动删除;
(5)语意化更好的内容元素,比如 article、footer、header、nav、section;
(6)表单控件,calendar、date、time、email、url、search;
(7)新的技术webworker, websocket, Geolocation;
5、软件测试
一、黑盒测试和白盒测试
黑盒测试,软件测试的主要方法之一,也可以称为功能测试、数据驱动测试或基于规格说明的测试。测试者不了解程序的内部情况,不需具备应用程序的代码、内部结构和编程语言的专门知识。只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。通过测试来检测每个功能是否都能正常使用。
白盒测试(white-box testing)又称透明盒测试(glass box testing)、结构测试(structural testing)等,软件测试的主要方法之一,也称结构测试、逻辑驱动测试或基于程序本身的测试。测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑盒测试)。在白盒测试时,以编程语言的角度来设计测试案例。测试者输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点。测试者了解待测试程序的内部结构、算法等信息,这是从程序设计者的角度对程序进行的测试。
- 简单分析:
黑盒测试
测试特点:测试功能;
测试依据:需求规格说明书
方法举例:等价类划分、边界值测试、因果图法、场景法、
优点:能站在用户的立场上进行测试
缺点:不能测试程序内部特定部位,如程序有误,则无法发现。
白盒测试
测试特点:测试程序接口与结构
测试依据:软件程序
方法举例:逻辑覆盖、静态结构分析、基本路径测试法、循环覆盖
优点:对程序内部特定部位进行覆盖测试。
缺点:无法检验程序外部特性。
2.直观地理解:
黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试。
白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为”结构测试“或”逻辑驱动测试“。白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。
- 作用:
黑盒测试主要是为了发现以下错误:
(1)是否有不正确或者遗漏了的功能;
(2)在接口上,输入能否正确的接受?能否输出正确的结果?
(3)是否有数据结构错误或外部信息(例如数据库文件)访问错误?
(4)性能上是否能够满足要求?
(5)是否有初始化或终止性错误?
黑盒的测试用例技术设计有三种: 边界值分析、等价类划分、错误推测法。
白盒测试主要是想对程序模块进行以下检查:
(1)对程序模块的所有独立的执行路径至少测试一遍;
(2)对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;
(3)在循环的边界和运行的界限内执行循环体;
(4)测试内部数据结构的有效性,等等;
(5)静态白盒测试 :即代码审查,正式审查和检验设计和程序代码;
(6)动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;
白盒的测试用例技术包括逻辑覆盖和基本路径测试。
逻辑覆盖:是以程序内在逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。
基本路径测试:在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。