很早的百度笔试

附上网上的百度web开发工程师笔试问题集
1编写一个方法 求一个字符串的字节长度

<script language=”javascript” type=”text/javascript”>
new function(s)
{
if(!arguments.length||!s) return null;
if(“”==s) return 0;
var l=0;
for(var i=0;i<s.length;i++)
{
if(s.charCodeAt(i)>255) l+=2;
else l++;
}
alert(l);
}(“hello你好,我好,大家好!world!”);
</script>

2编写一个方法 去掉一个数组的重复元素

<script language=”javascript” type=”text/javascript”>
Array.prototype.strip=function()
{
if(this.length<2) return [this[0]]||[];
var arr=[];
for(var i=0;i<this.length;i++)
{
arr.push(this.splice(i–,1));
for(var j=0;j<this.length;j++)
{
if(this[j]==arr[arr.length-1])
{
this.splice(j–,1);
}
}
}
return arr;
}
var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
alert(arr.strip());
</script>

3说出3条以上ff和ie的脚本兼容问题
IE 有children,FF没有;IE有parentElement,FF没有;IE有innerText,outerText,outerHTML,FF 没有;FF有HTMLElement,HTMLDivElement,XMLDocument,DocumentFragment,Node, Event,Element等等,IE没有;IE有数据岛,FF没有;IE跟FF创建HttpRequest实例的方法不一样。。等等。。
4用脚本写去除字符串的前后空格

String.prototype.trim = function(mode)
{//前后去空格
if (mode==’left’) {
return ((this.charAt(0) == ” “ && this.length > 0) ? this.slice(1).trim(‘left’) : this);
} else
if (mode == ’right’) {
return ((this.charAt(this.length - 1) == ” “ && this.length > 0) ? this.slice(0, this.length - 1).trim(‘right’) : this);
} else {
return this.trim(‘left’).trim(‘right’);
}
};

5算出字符串中出现次数最多的字符是什么,出现了多少次

<script type=”text/javascript”>
//<![CDATA[var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
var result = ''; //命名一个变量放置结果输入

while( str != '' ){ //循环迭代开始,并判断字符串是否为空
oldStr = str; //将原始的字符串变量赋值给新变量
getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
eval("str = str.replace(/"+getStr+"/g,'')"); //详细如补充

if( oldStr.length-str.length > maxLength )
{ //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
}
}

alert(result) //弹出结果
//]]>
</script>

6写出3中使用this的典型应用
在HTML元素事件属性中inline方式使用this关键字:

7.最后一个问题是,如何制作一个combo选项,就是可以输入可以下拉菜单选择。

这个网上有很多成品,主要是通过绝对定位和相对定位结合的方式,改造原有的select 标签和input标签的方法。

附上javascript正则表达式的基本知识:
g: 全局匹配
i: 忽略大小写
^ 匹配一个输入或一行的开头,/^a/匹配”an A”,而不匹配”An a”
$ 匹配一个输入或一行的结尾,/a$/匹配”An a”,而不匹配”an A”

  • 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
  • 匹配前面元字符1次或多次,/ba/将匹配ba,baa,baaa
    ? 匹配前面元字符0次或1次,/ba
    /将匹配b,ba
    (x) 匹配x保存x在名为$1…$9的变量中
    x|y 匹配x或y
    {n} 精确匹配n次
    {n,} 匹配n次以上
    {n,m} 匹配n-m次
    [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
    [^xyz] 不匹配这个集合中的任何一个字符
    匹配一个退格符
    b 匹配一个单词的边界
    B 匹配一个单词的非边界
    cX 这儿,X是一个控制符,/cM/匹配Ctrl-M
    d 匹配一个字数字符,/d/ = /[0-9]/
    D 匹配一个非字数字符,/D/ = /[^0-9]/
    n 匹配一个换行符
    r 匹配一个回车符
    s 匹配一个空白字符,包括n,r,f,t,v等
    S 匹配一个非空白字符,等于/[^nfrtv]/
    t 匹配一个制表符
    v 匹配一个重直制表符
    w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[w]匹配”$5.98″中的5,等于[a-zA-Z0-9]
    W 匹配一个不可以组成单词的字符,如[W]匹配”$5.98″中的$,等于[^a-zA-Z0-9
    举例:验证email
    var myReg = /^[_a-z0-9]+@([_a-z0-9]+.)+[a-z0-9]{2,3}$/;
    if(myReg.test(strEmail)) return true;
评论 ( 1 )
最新评论
hugeannex 2014-08-31 20:52:55 1F

感觉这种都是考数学家,还不是考程序员,搞这么多算法,实际上能用上千分之几?