织梦 友情链接 网站名 分隔符,wordpress设置主页面,wordpress在手机登录,广州做网站优化大家好#xff0c;我是若川。最近组织了源码共读活动《1个月#xff0c;200人#xff0c;一起读了4周源码》#xff0c;已经有超50人提交了笔记#xff0c;群里已经有超1200人#xff0c;感兴趣的可以点此链接扫码加我微信 ruochuan12本文经作者lxcan 授权转载#xff0… 大家好我是若川。最近组织了源码共读活动《1个月200人一起读了4周源码》已经有超50人提交了笔记群里已经有超1200人感兴趣的可以点此链接扫码加我微信 ruochuan12本文经作者lxcan 授权转载未经授权请勿直接转载。原文标题《三年经验前端社招——Shopee》原文链接https://zhuanlan.zhihu.com/p/405752877文末点击阅读原文直达前言本人毕业学校是双非二本非计算机科班出身大学时自学的前端相关技能。截止2021年8月有3年前端开发经验技术栈为 vue 全家桶求职意向城市是深圳。想着找一个更大的平台寻求发展技术沉淀、涨薪所以出来接受社会的毒打了。。。本文的目的是记录自己的面试经历各位路过的兄dei也可以参考一下也让自己有个回顾和反思。路漫漫其修远兮吾将上下而求索下面的题目都会标明每一题的性质部分题目也会给出一些参考思路和参考回答希望各位大佬不吝赐教~描述对概念、过程的描述纯理论性问答题为主举例说出应用场景或者是自己团队实践的情况伪代码写代码但不需要跑起来甚至可以随便写伪代码主要目的是描述思路编程真正的写代码需要跑起来有测试用例要看到效果HR面的话是一些日常、项目回顾少说技术细节、职业规划、你的优势和缺点、为什么跑路、为什么选择这边、目前薪资和职级、期望薪资HR面基本离不开这些问题。一面1、编程题改造 Person 使其在非new调用时抛出错误【编程】function Person(name) {this.name name
}
Person(Hello)
new Person(Hello)参考答案function Person(name) {if (!(this instanceof Person)) {throw Error(error msg)}this.name name
}2、实现 instanceof 方法【编程】参考答案function myIntanceOf (left, right) {left left.__proto__var prototype right.prototypewhile (true) {if (left null ) return falseif (left prototype) return trueleft left.__proto__}
}
function Foo () {}
var f new Foo()
console.log(myInstanceof(f, Foo)); // true
console.log(myInstanceof(f, Object)); // true
console.log(myInstanceof([1,2], Array)); // true
console.log(myInstanceof({ a: 1 }, Array)); // false3、结合第1题Person 是什么类型的对象是否有 __proto__ 属性【描述】Person 是函数对象有 __proto__ 属性Person 的隐式原型等于它的构造函数的显式原型Person.__proto__ Function.prototype4、说下 prototype 和 __proto__ 的区别【描述】5条原型规则所有的引用类型数组、对象、函数都具有对象特性即可自由扩展属性除了null以外所有的引用类型数组、对象、函数都有一个__proto__ 隐式原型属性属性值是一个普通的对象所有的函数都有一个 prototype 显式原型属性属性值也是一个普通的对象所有的引用类型数组、对象、函数__proto__ 属性值指向它的构造函数的 prototype 属性值当试图得到一个对象引用类型的某个属性时如果这个对象本身没有这个属性那么会去它的 __proto__即它的构造函数的 prototype中寻找5、实现 Student 方法Student 继承 Person 也有自己的属性和方法【编程】参考答案function Student(grade, name) {Person.call(this)this.grade gradethis.name name
}
Student.prototype Object.create(Person.prototype)
Student.prototype.Constructor Student
Student.prototype.getGrade function () {return this.grade
}6、完成一个 sum 函数实现如下功能【编程】/*
* 编写函数sum
* sum(1)(2).count() // 3
* sum(1)(2)(3).count() // 6
*/参考答案function sum () {let args [...arguments]let add function () {args.push(...arguments)return add}add.count function () {return args.reduce((acc, cur) acc cur)}return add
}
console.log(sum(1)(2).count()); // 3
console.log(sum(1)(2)(3).count()); // 6其他版本调用方式形如sum(1)(2)() // 3function curry (fn) {let args []return function f (...newArgs) {if (newArgs.length) {args [...args, ...newArgs]return f} else {let res fn(...args)args []return res}}
}
function count (...args) {return args.reduce((a,c) ac)
}
let sum curry(count)
sum(1)(2)() // 3
sum(1)(2)(3)() // 67、完成如下 findPath 函数输入一个对象和对象上的一个节点或子节点的值值唯一值类型为字符串输出该值对应在该对象的key的路径【编程】const obj {a: {a_1: {a_1_1: abc,a_1_2: efg}},b: {b_1: xyz,b_2: 111},c: 000
}
const result findPath(obj, xyz) // [b, b_1]参考答案function flatObj (obj, key , res {}) {for (let [k, v] of Object.entries(obj)) {if (Object.prototype.toString.call(v) [object Object]) {let temp key k .flatObj(v, temp, res)} else {let temp key kres[temp] v}}return res
}function findPath(obj, value) {let o flatObj(obj)// k a.a_1.a_1_1for (let [k, v] in Object.entries(o)) {if (v value) {return k.split(.)}}return []
}最后Shopee 深圳虾皮信息科技有限公司是东南亚领航电商平台。听说公司里面都是腾讯、阿里、字节的大佬居多技术前沿福利好各方面都不错。一面是视频面试是在虾皮自有的平台上视频面写编程题自我感觉基本都写出来了可能不是最优解吧没跑测试用例一面之后没后续了不管怎样菜是原罪继续加油吧~往期回顾三年经验前端社招——朴朴科技三年经验前端社招——腾讯微保三年经验前端社招——丰巢科技三年经验前端社招——众安保险三年经验前端社招——有赞三年经验前端社招——慧择网天生我材必有用千金散尽还复来最近组建了一个湖南人的前端交流群如果你是湖南人可以加我微信 ruochuan12 私信 湖南 拉你进群。推荐阅读1个月200人一起读了4周源码我读源码的经历老姚浅谈怎么学JavaScript我在阿里招前端该怎么帮你可进面试群················· 若川简介 ·················你好我是若川毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列从2014年起每年都会写一篇年度总结已经写了7篇点击查看年度总结。同时最近组织了源码共读活动识别上方二维码加我微信、拉你进源码共读群今日话题略。欢迎分享、收藏、点赞、在看我的公众号文章~