博主本人前两天刚参加了百度前端校园招聘笔试,现把能记住的跟大家分享探讨下,还有一些是网上搜集来的其他地区的笔试
1、列举所知道的图片格式,说明其应用场景和优缺点
当时只填出png,jpg,gif这几个格式,应用场景和优缺点只能随便写了几句话。
网上搜集的资料如下:
- bmp(位图)格式:它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点——占用磁盘空间过大。
- gif格式:可以同时存储若干幅静止图象进而形成连续的动画。目前Internet上大量采用的彩色动画文件多为这种格式的文件。缺点是不能存储超过256色的图像。
- jpeg格式:文件扩展名为.jpg或.jpeg,其压缩技术十分先进,可以用最少的磁盘空间得到较好的图像质量。应用非常广泛,特别是在网络和光盘读物上。
- png格式:一种新兴的网络图像格式,结合GIF及JPG两家之长,是目前保证最不失真的格式,它汲取了GIF和JPG二者的优点,存贮形式丰富。PNG的缺点是不支持动画应用效果。
以上资料摘自网上搜索结果。
2、跨域通信问题解决方法
作答时只写了利用document.domain
详情请见我另一篇博客web跨域通信问题解决
3、父元素设置了一个透明度,让子元素不继承父元素透明度,有什么解决方法
博主表示平常透明度用的就不多,更没有遇到子元素继承的情况,所以此题你懂的
解决办法:a、利用绝对布局,不使用子元素,使其看似是子元素,但由于position:absolute,可能会出现很多问题
b、IE中,子元素添加position:relative,非IE,使用background:rgba(120,120,120,0.7)来实现。
4、考察加号减号运算符
1 console.log(2+'1') //'21'
2
3 console.log(2-'1') //1
4
5 console.log(1+ -'1'+'2') //'02'
6
7 console.log(+'1'+'1'+'2') //'112'
8
9 console.log(1+ +'2'+'2') //'32'
10
11 console.log('A'-'B'+2) //NaN
12
13 console.log('A'-'b'+'2') //'NaN2'
5、手机端浏览器,当用户使用百度搜索某一结果时,返回N条记录,用户可向下滚动查看记录,而不是像电脑上的翻页效果
我觉得是考的AJAX无刷新修改页面的问题,当用户搜索时,先返回搜索记录的前n调数据(不用太多),当滚动到底端时,利用ajax技术,取得后n条数据,然后将取得的数据append进页面中。
6、设计一个once函数,这个函数只执行一次,若再执行,直接返回上次的结果。
我认为是利用立即执行加闭包的方式,再利用hash-table判断是否已经执行
1 /*只执行一次的函数*/
2 var test1 =function(){
3 alert('OK1'); //只会弹出一次
4 console.log('OK1');
5 }
6
7 var test2 =function(){
8 alert('OK2'); //只会弹出一次
9 console.log('OK');
10 }
11
12 var once = function(){
13 var obj = {},i = -1;
14 return function(fn){
15 if(arguments.length<1){
16 alert('请传入要执行的函数');
17 return;
18 }
19 for(var key in obj){
20 if(obj[key].func === fn){
21 return obj[key].result;
22 }
23 }
24 var result = fn();
25 i++;
26 obj[i] = {func:fn,result:result};
27 return result;
28 }
29 }()
7、问了些自己平常做的事情
---------------------------------------------------------------分割线---------------------------------------------------------------------------
以下是网上搜集来的题目
a、html5语义化标签
在HTML 5出来之前,我们用div
来表示页面章节,但是这些div
都没有实际意义(例如<div id="header"></div> <div id="footer"></div>等等),html5的出现改变了这一规则。语义化标签优点:结构更好,更利于搜索引擎的抓取(SEO的优化)和开发人员的维护(可维护性更高,结构清晰,易于阅读);更有利于特殊终端的阅读等。
- <header></header> 网页的页眉,通常包含
h1-h6
元素或hgroup
,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个nav
,或者任何相关logo。整个页面没有限制header元素的个数,可以拥有多个,可以为每个内容块增加一个header元素。 - <footer></footer> 网页的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。如果
footer
元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。 - <hgroup></hgroup> 代表“网页”或“section”的标题,当元素有多个层级时,该元素可以将
h1
到h6
元素放在其内,譬如文章的主标题和副标题的组合。如果只需要一个h1-h6标签就不用hgroup。 - <nav></nav> 元素代表页面的导航链接区域。用于定义页面的主要导航部分。
- <aside></aside> 元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等(特殊的section)。
- <section></section> 元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。section通常还带标题,虽然html5中section会自动给标题h1-h6降级,但是最好手动给他们降级。article、nav、aside可以理解为特殊的section,所以如果可以用article、nav、aside就不要用section,没实际意义的就用div。
- <article></article> 元素最容易跟section和div容易混淆,其实article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。(特殊的section)除了它的内容,article会有一个标题(通常会在header里),会有一个footer页脚。如果在article内部再嵌套article,那就代表内嵌的article是与它外部的内容有关联的。article内部嵌套section,这样能让浏览器更容易区分各个章节所包括的内容。section内部嵌套article,section将这些自成一体的article包裹,就组成了一个团体。
b、客户端存储
- cookie 可以允许的最大存储为4KB,不适合存储任何复杂数据。
- webStorage W3C规范,HTML5新方法,提供了在客户端存储数据的功能,它可以维持数据直到会话结束(sessionStorage),或者更久(localStorage)。有getItem(key),setItem(key,value),removeItem(key),clear()四种方法。
- sessionStorage 针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
- localStorage 存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
- 离线缓存application cache CACHE MANIFEST
c、RGB HEX转换
1 /*RGB(255,255,0),rgb(25,12,100)*/
2 var rgbToHex = function(rgb) {
3 var reg = /RGB|rgb|\(|\)/g;
4 var rColor = rgb.replace(reg,'').split(',');
5 var strHex = '#';
6 for(var i=0,len=rColor.length;i<len;i++) {
7 var hex = Number(rColor[i]).toString(16);
8 if(hex.length == 1){
9 hex = '0' + hex;
10 }
11 strHex = strHex + hex;
12 }
13 return strHex;
14 }
15
16 /*#ff00f0,#ff0*/
17 var hexToRgb = function(hex) {
18 if(hex.length==4){ //将3位的颜色变为6位的形式
19 var hColor = '#';
20 for(var i=1;i<4;i++) {
21 hColor = hColor + hex.substring(i,i+1) + hex.substring(i,i+1);
22 }
23 hex = hColor;
24 }
25 var strRgbArr = [];
26 for(var i=1;i<7;i=i+2){
27 strRgbArr.push(parseInt('0x'+hex.substring(i,i+2)));
28 }
29 return 'RGB(' + strRgbArr.join(',') + ')';
30 }
d、前端优化
PS. 答案题目我会不定期更新,欢迎各位大牛指导