前端常见手写笔试题

1.获取数组中最大值
 var arr=[1,2,3,4,3,2,1];

function getMax(arr){

for(var i=0,max=arr[0];

i<arr.length;

arr[i]>max&&(max=arr[i]),i++);

return max;//返回max

}

console.log(getMax(arr));//4
2.数组去重
方法一:

var arr=["a","b","a","c","a","b"];

function unique1(arr){

//遍历arr中每个元素,同时声明空数组uarr

for(var i=0,uarr=[];i<arr.length;i++){

//遍历uarr中每个元素

for(var j=0;j<uarr.length;j++){

//如果uarr中当前元素等于arr中当前元素

if(uarr[j]==arr[i]){

break;//就退出循环

}

}//(遍历结束)

//如果j等于uarr的length

//将arr中当前元素加入uarr中

j==uarr.length&&(uarr[j]=arr[i]);

}//(遍历结束)

return uarr;//返回uarr

}  
方法二:
function unique2(arr){

//遍历arr中每个元素,同时创建空数组hash

for(var i=0,hash=[];i<arr.length;i++){

//如果hash中以arr中当前元素值为key的元素等于undefined

if(hash[arr[i]]===undefined){

//就在hash中添加一个新元素,key为arr中当前元素,值为1

hash[arr[i]]=1;

}

}//(遍历结束)hash:["a":1,"b":1,"c":1]

i=0;//设置i=0

var keys=[]//定义空数组keys

for(keys[i++] in hash);

return keys;

}
3.冒泡排序
function bubbleSort(arr){

//r从1开始,到<length结束

for(var r=1;r<arr.length;r++){

for(var i=0;i<arr.length-r;i++){

if(arr[i]>arr[i+1]){

//交换当前元素和下一个元素的位置

//方法1: a+=b; b=a-b; a-=b;

//方法2: b=[a,a=b][0];

arr[i+1]=

[arr[i],arr[i]=arr[i+1]][0];

}

}

}

}
4.插入排序
 function insertSort(arr){

for(var i=1;i<arr.length;i++){

var temp=arr[i];

var p=i-1;

while(temp<arr[p]&&p>=0){

arr[p+1]=arr[p];

p--;

}

arr[p+1]=temp;

}

}

5.快速排序
 function quickSort(arr){

if(arr.length<=1){return arr;}

else{

var c=Math.floor(arr.length/2);

var center=arr.splice(c,1)[0];

var left=[],right=[];

for(var i=0;i<arr.length;i++){

if(arr[i]<=center){left.push(arr[i])}

else{right.push(arr[i])}

}

return quickSort(left)

.concat(center,quickSort(right));

}

}

6.十进制转二进制
function dec2bin(dec){

var bin=[];//声明空数组bin

//只要dec>0,就反复

while(dec>0){

bin.unshift(dec%2);

dec=parseInt(dec/2);

}//(遍历结束)

return bin.join("");

}
7.将英文句子中的每个单词首字母转大写
var str="we two who and who";

//\b[a-z]+\b

str=str.replace(/\b[a-z]/g,

function(kwd){

return kwd.toUpperCase();

}

);
8.每个单词后面添加逐渐增加的数字
var str="we two who and who";

var i=5;

str=str.replace(/\b[a-z]+\b/g,

function(kwd){

return kwd+i++;

}

);
9.删除开头或结尾空字符串
 function ltrim(str){

return str.replace(/^\s+/,"");

}

function rtrim(str){

//" \t张 东 \t" =>" \t张 东"

return str.replace(/\s+$/,"");

}

function trim(str){

//" \t张 东 \t" =>"张 东"

return str.replace(/^\s+|\s+$/g,"");

}
10.格式化
 var date="20160830二下0434";

date=date.replace(

/(\d{4})(\d{2})(\d{2})([\u4e00-\u9fa5])([\u4e00-\u9fa5])(\d{2})(\d{2})/,

"$1年$2月$3日 星期$4 $5午 $6:$7");

11.定义indexOf函数,可以从指定位置开始,查找下一个指定值得下标位置,如果找不到,返回-1

function indexOf(arr,val,fromi){

fromi===undefined&&(fromi=0);

for(;fromi<arr.length;fromi++){

if(arr[fromi]==val){

return fromi;//返回fromi

}

}

return -1; //返回-1

}
12.扩展Array类型的indexOf方法
if(Array.prototype.indexOf===undefined){

Array.prototype.indexOf=

function(val,fromi){

fromi===undefined&&(fromi=0);

for(;fromi<this.length;fromi++){

if(this[fromi]==val){

return fromi;              }

}

return -1;

}

}

13.判断一个对象是不是数组
var  obj={},arr=[],obj2={};obj2.__proto__=arr;
方法一:document.write(//isPrototypeOf

"<br>"+Array.prototype.isPrototypeOf(obj)+

"<br>"+Array.prototype.isPrototypeOf(arr)+

"<br>"+Array.prototype.isPrototypeOf(obj2)

);

方法二: document.write(//instanceof

"<br>"+(obj instanceof Array)+

"<br>"+(arr instanceof Array)+

"<br>"+(obj2 instanceof Array)

);

方法三:    document.write(//Object.prototype.toString

"<br>"+(Object.prototype.toString.call(obj)

=="[object Array]")+

"<br>"+(Object.prototype.toString.call(arr)

=="[object Array]")+

"<br>"+(Object.prototype.toString.call(obj2)

=="[object Array]")

);

方法四:  //如果Array构造函数没有isArray

if(Array.isArray===undefined){

//在Array的构造函数中添加isArray=

Array.isArray=function(obj){

//强行用obj调用Object.prototype.toString,如果结果是"[object Array]",就返回true

//否则,返回false

return Object.prototype.toString

.call(obj)

=="[object Array]"?

true:false;

}

}

document.write(//Array.isArray(obj);//ES5

"<br>"+Array.isArray(obj)+

"<br>"+Array.isArray(arr)+

"<br>"+Array.isArray(obj2)

);
14.实现一个js类型,既包含公有属性,又包含私有属性
 function Emp(id,name,age,salary){

//public

this.id=id;

this.name=name;

this.salary=salary;

var _age;//private

//配置属性的特性:

Object.defineProperties(this,{

id:{

writable:false,configurable:false

},

salary:{//设置salary不可遍历

enumerable:false,configurable:false

},

age:{//添加访问器属性保护局部变量_age

set:function(val){

if(val<18||val>65)

throw new Error(

"年龄必须介于18~65之间");

_age=val;

},

get:function(){return _age},

enumerable:true,

configurable:true

}

});//this(当前对象)已经有了访问器属性age

this.age=age;

Object.seal(this);

}
15.手写bind方法
if(Function.prototype.bind===undefined){

//就在函数类型的原型中添加bind方法,定义1个参数obj

Function.prototype.bind=

function(obj/*,args1*/){

var fun=this;//this->原函数对象

var args1= Array.prototype.slice.call(

arguments,1

);//arguments.slice(1)`

return function(/*args2*/){//返回新函数:

var args2=

Array.prototype.slice.call(

arguments

);//arguments.slice();

fun.apply(

obj,args1.concat(args2)

);

}

}

}
16.手写foreach,map 方法
if(Array.prototype.forEach===undefined){

//就为Array的原型添加forEach方法,参数定义为callback

Array.prototype.forEach=

function(callback){

//遍历当前数组中每个元素

for(var i=0;i<this.length;i++){

//如果当前元素不是undefined

if(this[i]!==undefined){

//调用callback,传入当前元素值,当前位置,当前数组作为参数

callback(this[i],i,this);

}

}

}

}
if(Array.prototype.map===undefined){

//就为Array的原型添加map方法,参数定义为callback

Array.prototype.map=

function(callback){

//创建一个空数组arr

var arr=[];

//遍历原数组中每个元素

for(var i=0;i<this.length;i++){

//如果原数组中当前元素不是undefined

if(this[i]!==undefined){

//调用callback,传入当前元素值,当前位置,原数组,将结果保存到arr的相同位置

arr[i]=

callback(this[i],i,this);

}

}//(遍历结束)

return arr;//返回arr

}

}

原文地址:https://www.cnblogs.com/qinmanyu/p/10105289.html

时间: 2024-11-06 07:23:47

前端常见手写笔试题的相关文章

Android开发面试经——4.常见Android进阶笔试题(更新中...)

Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359 上一篇文章我们已经了解了Android笔试的一些基础题目, [<Android开发面试经——2.常见Android基础笔试题> ] (http://blog.csdn.net/finddreams/a

三星note 6专利曝光 手写笔可弯曲折叠

三星Note 6专利曝光 手写笔可弯曲折叠 来源:新浪网 更新时间:2016-02-11 09:41:33 分类:科技 关键词:三星,手写笔,可弯曲 三星新一代的旗舰机Galaxy S7和S7 Edge还有十天就要在MWC 2016之前的一天正式发布了,最近有关这两款机型的传闻在网络上也是铺天盖地.尽管在目前三星S系列的强势下,Note系列已经不如以前那么抢眼了,不过有关三星Note系列新一代的机型Note 6近日还是已经开始曝光了. 三星Note系列最大的特点就是该系列手机都配备的S Pen手

苹果没放弃手写笔 这样的iPad你想要吗?

12 月 31 日,美国专利与商标局(The U.S. Patent and Trademark Office)当地时间周四批准了一项来自苹果的专利申请,该专利主要描述的是一种可以通过陀螺仪.无线通讯装置和内置储存芯片将手写在白板.平面上内容 同步传输到电子设备屏幕上的触控技术. 据美国科技媒体 Apple Insider 透露,苹果此次的专利申请代号为 8922530,其内容其实就是一个可以通过陀螺仪.无线通讯装置和内置储存芯片将手写内容传输到电子设备屏幕上的“通讯手写笔” (communic

android手写笔思路

工作需要,对这方面做了一些了解 一般的手写对android canvas有点理解的应该都知道,只需要单纯的使用drawPath就可以在view上画画. 而手写笔的关键则是要让path的strokeWidth发生变化 这个令人头大了, 毕竟setPaint只能够设置一个paint,一旦改变paint的参数,整个path都会发生改变. 所以,我们只能够另辟蹊径. 我们可以先开一个arraylist(Point),用来记录我们在surfaceview(推荐在画画功能上使用surfaceview代替vi

Android开发面试经——3.常见Android进阶笔试题

关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359 上一篇文章我们已经了解了Android笔试的一些基础题目,<Android开发面试经--2.常见Android基础笔试题> 但是做为一个有经验的开发者,仅仅知道基础题还是不够的,你的简历上说有两年以上工作经验的话,那面试官肯定会问一些深入性的问题,看你能否回答的出.所以为了找一个更好的工作,我们还需要去了解一下Android进阶的笔试题目: 1.什么是

Android开发面试经——2.常见Android基础笔试题

关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44219231 正值跳槽的热季,整理一下Android面试中最常考的笔试题,为下次找工作时做好充分准备,这是Android的基础部分: 1.Android四大组件是什么?作用以及应用场景? Android 的四大组件分别是是Activity,Service,BroadcastReceiver和ContentProvider: Activity: 从字面上理解,Acti

Android开发面试经——4.常见Java基础笔试题

关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44403041 因为Androd使用Java语言来编程的,所以我们做Android开发全面的掌握Java基础是必须的.在面试的过程中,我们发现很多公司发的笔试题有很多知识点都是Java的,搞安卓久了,Java基础的一些知识点也都快忘了,今天就让我们来一起复习一些Java基础,希望能在面试中用到: 1.Overload和Override的区别.Overloaded的方法是

22 道高频 JavaScript 手写面试题及答案

实现防抖函数(debounce) 防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. 那么与节流函数的区别直接看这个动画实现即可. 手写简化版: // 防抖函数 const debounce = (fn, delay) => { let timer = null; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, del

zen-coding for notepad++,前端最佳手写代码编辑器

zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器,如UltraEdit,Notepad++等. 温馨提示:zen-Coding已经改名Emmet,并且搭建了一个新的网站:docs.emmet.io. zen-Conding下载地址:http://code.google.com/p/zen-coding/downloads/list (进入下载页,