年底各种渠道的2016前端开发最新公司面

1设计一个幻灯应用,需要列举选择的基础框架、项目的基础框架和代码管理、幻灯数据的存储和读取,部分特效的实现,可以只写思路,后续面聊。本题并没有找到好的答案解析,自己也没有好的思路,有比较好想法的同学可以分享一下。2请写出至少20个HTML5标签articleasideaudiocanvasdatalist   1.透明性,Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha透明)。   2.动画,Gif这种格式支持动画。   3.无损耗性,Gif是一种无损耗的图像格式,这也意味着你可以对gif图片做任何操作也不会使得图像质量产生损耗。   4.水平扫描,Gif是使用了一种叫作LZW的算法进行压缩的,当压缩gif的过程中,像素是由上到下水平压缩的,这也意味着同等条件下,横向的gif图片比竖向的gif图片更加小。例如*10的图片比10*的图片更加小   5.间隔渐进显示,Gif支持可选择性的间隔渐进显示   由以上特点看出只有种颜色的gif图片不适合照片,但它适合对颜色要求不高的图形(比如说图标,图表等),它并不是最优的选择,我们会在后面中看到png是最优的选择。   Jpeg格式特点:   1.透明性,它并不支持透明。   2.动画,它也不支持动画。   3.损耗性,除了一些比如说旋转(仅仅是90、、度旋转),裁切,从标准类型到先进类型,编辑图片的原数据之外,所有其它操作对jpeg图像的处理都会使得它的质量损失。所以我们在编辑过程一般用png作为过渡格式。   4.隔行渐进显示,它支持隔行渐进显示(但是ie浏览器并不支持这个属性,但是ie会在整个图像信息完全到达的时候显示)。   由上可以看出Jpeg是最适web上面的摄影图片和数字照相机中。   Png格式特点:   1.类型,Png这种图片格式包括了许多子类,但是在实践中大致可以分为色的png和全色的png,你完成可以用色的png代替gif,用全色的png代替jpeg   2.透明性,Png是完全支持alpha透明的(透明,半透明,不透明),尽管有两个怪异的现象在ie6(下面详细讨论)   3.动画,它不支持动画   PNG图片格式现在包含三种类型:   1.PNG8色PNG的别名   2.PNG24全色PNG的别名   3.PNG32全色PNG的别名   基本上PNG32就是PNG24,但是附带了全alpha通道。就是说每个像素上不仅存储了24位真色彩信息还存储了8位的alpha通道信息,就如同GIF能存储透明和不透明信息一样。当我们把图片放到不太搭配的背景上的时候,透明PNG图片的边缘会显示得更加平滑。   当然,我也知道你的想法,“但是Photoshop也能生成带透明通道的PNG图片!”我也知道,它只是表面上这么说是PNG24,让我也产生困惑了。   作为一个伤感的Fireworks倡导者,我只使用PNG32支持附带alpha通道的真色彩图片。不管怎样,如果你习惯使用Photoshop,你就应该知道,Photoshop在“存储为WEB格式”中只提供PNG8和PNG24两种PNG格式。   我敢肯定你经常会勾选“支持透明”选项,以获得带有透明度的PNG图片,但是这样你就获取了一张PNG32图片。——Photoshop只是觉得把PNG32这个名称给隐藏掉了。奇怪吧?……   对png8的误解   Png8的在ie中的怪异表现:   半透明的png8在ie6以下的浏览器显示为全透明。   Alpha透明的全色PNG(png32)在ie6中会出现背景颜色(通常是灰色)。   由上面可以总结:   (a)全透明的png8可以在任一浏览器正常显示(就像gif一样)。半透明的png8在除了ie6及其以下的浏览器下错误的显示成全透明,其它浏览器都能正常显示半透明。这个bug并不需要特殊对待,因为在不支持半透明的浏览器下只是显示为全透明,对用户体验影响不大,它反而是透明gif的加强版。   (b)第二个bug没有什么好的方法解决,只能通过影响性能的方法AlphaImageLoader与需要加特殊标签(VML)。   因此得出结论就是:请使用PNG8。   Png8的软件问题:   Photoshop只能导出布尔透明的PNG8。   Fireworks既能导出布尔透明的PNG8,也能导出alpha透明的PNG8.5算法题:有一个长度为n-1的数组,包含1-n中不重复的乱序的数,求寻找范围内不在数组中的数,考虑空间占用,性能优化,溢出等情况,至少写两个算法当n不太大时,可以考虑求和。先算出1~n的所有数的和,然后减去数组中出现的所有自然数的和。时间复杂度为O(n),空间复杂度O(1)。这种方法的缺点是n不能太大,n比较大时,求和容易溢出。用位图。从头到尾的扫描整个数组,把出现的数相应的位设置为1.然后再扫描位图,找出不为1的那一位,即为要找的数。这种方法的时间复杂度为O(n),空间复杂度为O(n)。异或有个很巧妙的地方:同一变量和该变量与另一变量的异或值的异或等于这个变量自身。所以我们可以把1~n的所有数异或,再把数组中出现的所有数异或,然后再把这两个异或的结果异或,最后得到的值即为我们要找的值。这样时间复杂度为O(n),空间复杂度为O(1)。在空间上比第二种方法要好,而且不会出现第一种方法中所说的溢出问题。6实现以下方法(与标准一致)Element.prototype.getElemantsByclassnameelement.prototype.getElementsByClassName=function(searchClass,node,tag){if(document.getElementsByClassName){varnodes=(node

document).getElementsByClassName(searchClass),result=[];for(vari=0;node=nodes[i++];){if(tag!=="*"node.tagName===tag.toUpperCase()){result.push(node)}}returnresult}else{node=node

document;tag=tag

"*";varclasses=searchClass.split(""),elements=(tag==="*"node.all)?node.all:node.getElementsByTagName(tag),patterns=[],current,match;vari=classes.length;while(--i=0){patterns.push(newRegExp("(^

\\s)"+classes[i]+"(\\s

$)"));}varj=elements.length;while(--j=0){current=elements[j];match=false;for(vark=0,kl=patterns.length;kkl;k++){match=patterns[k].test(current.className);if(!match)break;}if(match)result.push(current);}returnresult;}}Function.Prototype.bindFunction.prototype.bind=function(oThis){if(typeofthis!=="function"){thrownewTypeError("bindfunctionerror");}varaArgs=Array.prototype.slice.call(arguments,1),fToBind=this,fBound=function(){returnfToBind.apply(oThis

window,aArgs.concat(Array.prototype.slice.call(arguments)));};returnfBound;};7能够设置文本加粗的样式属性是什么字体加粗(font-weight)   功能:用于设置字体笔划的粗细。   属性值:正常度-normal   相对度-bold,bolder,light,lighter   渐变度-,,,(相当于normal),,,(相当于bold、lighter、bolder、以及数值-。   语法为:h1{font-weight:属性值}8编写一个方法去掉一个数组的重复元素1.遍历数组法最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下://最简单数组去重法functionunique1(array){varn=[];//一个新的临时数组//遍历当前数组for(vari=0;iarray.length;i++){//如果当前数组的第i已经保存进了临时数组,那么跳过,//否则把当前项push到临时数组里面if(n.indexOf(array[i])==-1)n.push(array[i]);}returnn;}//判断浏览器是否支持indexOf,indexOf为ecmaScript5新方法IE8以下(包括IE8,IE8只支持部分ecma5)不支持if(!Array.prototype.indexOf){//新增indexOf方法Array.prototype.indexOf=function(item){varresult=-1,a_item=null;if(this.length==0){returnresult;}for(vari=0,len=this.length;ilen;i++){a_item=this[i];if(a_item===item){result=i;break;}}returnresult;}}2.对象键值对法该方法执行的速度比其他任何方法都快,就是占用的内存大一些;实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。注意点:判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如:a[1]、a["1"]。解决上述问题还是得调用“indexOf”。//速度最快,占空间最多(空间换时间)functionunique2(array){varn={},r=[],len=array.length,val,type;for(vari=0;iarray.length;i++){val=array[i];type=typeofval;if(!n[val]){n[val]=[type];r.push(val);}elseif(n[val].indexOf(type)0){n[val].push(type);r.push(val);}}returnr;}3.数组下标判断法还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。functionunique3(array){varn=[array[0]];//结果数组//从第二项开始遍历for(vari=1;iarray.length;i++){//如果当前数组的第i项在当前数组中第一次出现的位置不是i,//那么表示第i项是重复的,忽略掉。否则存入结果数组if(array.indexOf(array[i])==i)n.push(array[i]);}returnn;}4.排序后相邻去除法虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。//将相同的值相邻,然后遍历去除重复值functionunique4(array){array.sort();varre=[array[0]];for(vari=1;iarray.length;i++){if(array[i]!==re[re.length-1]){re.push(array[i]);}}returnre;}5.优化遍历数组法实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)//思路:获取没重复的最右一值放入新数组functionunique5(array){varr=[];for(vari=0,l=array.length;il;i++){for(varj=i+1;jl;j++)if(array[i]===array[j])j=++i;r.push(array[i]);}returnr;}9编写一个布局,页面宽度自适应,最小宽度px,左边定宽35%,右边定宽65%divclass="container"divclass="left"/divdivclass="right"/div/divstyle.container{height:px;_width:px;min-width:px;}.left{width:35%;height:%;background:#ff0;float:left;}.right{overflow:hidden;width:65%;height:%;background:#0f0;}/style10谈谈对html5的了解1.良好的移动性,以移动设备为主。2.响应式设计,以适应自动变化的屏幕尺寸3.支持离线缓存技术,webStorage本地缓存4.新增canvas,video,audio等新标签元素。新特殊内容元素:article,footer,header,nav,section等,新的表单控件:calendar,date,time,email,url,search。5.地理定位...6.新增webSocket/webWork技术12、Js面向对象的几种方式1.对象的字面量varobj={}2.创建实例对象varobj=newObject();3.构造函数模式functionfn(){},newfn();4.工厂模式:用一个函数,通过传递参数返回对象。functionfn(params){varobj=newObject();obj.params=params;returnobj;},fn(params);5.原型模式:functionclock(hour){}fn.prototype.hour=0;newclock();首先,每个函数都有一个prototype(原型)属性,这个指针指向的就是clock.prototype对象。而这个原型对象在默认的时候有一个属性constructor,指向clock,这个属性可读可写。而当我们在实例化一个对象的时候,实例newClock除了具有构造函数定义的属性和方法外(注意,只是构造函数中的),还有一个指向构造函数的原型的指针,ECMAScript管他叫[[prototype]],这样实例化对象的时候,原型对象的方法并没有在某个具体的实例中,因为原型没有被实例。11在css中哪个属性会影响dom读取文档流的顺序1.direction,writing-mode12前端页面有哪三层构成,分别是什么,作用是什么Css:层叠样式表,表现,由css负责创建。css对“如何显示有关内容”的问题做出了回答。Html:超文本标记语言,结构,由HTML或xhtml之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:“这是一个文本段。”Js:客户端脚本语言,行为,内容应该如何对事件做出反应13Css的基本语句构成是?语法:(自定义的样式名称){样式内容}14如何对网站的文件和资源进行优化1.文件合并(目的是减少







































北京治疗白癜风那家医院好
小孩白癜风好不好治



转载请注明:http://www.guyukameng.com/html/3455.html

  • 上一篇文章:
  •   
  • 下一篇文章: