关于笔试:offer拿来吧你网易有道笔试编程题特辑

分割咱们:有道技术团队助手:ydtech01 / 邮箱:ydtech@rd.netease.com 欢送应届生同学们 来到2022年校招运动会 当初迎面向你们走来的 是网易有道代表队! (传送门:http://hr.youdao.com/ ) 他们食堂好吃 他们从不内卷 明天,他们还带来了 10道口试编程题 据说全做对的同学 都顺利地拿到了 offer! 同学们,请开始你们的 bug 啊不 表演吧! 一、热身运动1.1 找到反复数字给定一个蕴含 n+1 个整数的数组 nums ,其数字都在 1 到 n 之间(包含 1 和 n),可知至多存在一个反复的整数。假如 nums 只有一个反复的整数 ,找出这个反复的数。 难度:一星工夫限度:C/C++ 1秒,其余语言2秒空间限度:C/C++ 256MB,其余语言512MB64bit IO Format: %lld**样例: 输出:[1,3,4,2,2]返回:2import java.util.*;public class Solution { /** * 代码中的类名、办法名、参数名曾经指定,请勿批改,间接返回办法规定的值即可 * * 返回反复数字 * @param nums int整型一维数组 * @return int整型 */ public int duplicate (int[] nums) { // write code here int n = nums.length; int l = 1, r = n - 1, ans = -1; while (l <= r) { int mid = (l + r) >> 1; int cnt = 0; for (int i = 0; i < n; ++i) { if (nums[i] <= mid) { cnt++; } } if (cnt <= mid) { l = mid + 1; } else { r = mid - 1; ans = mid; } } return ans; }}1.2 三角形面积输出三个点的坐标,输入三个点组成的三角形的面积。(后果保留三位小数点并四舍五入) ...

August 13, 2021 · 8 min · jiezi

寒冬三年经验前端面试总结含头条百度饿了么滴滴等之手写题一

前言不论是寒冬还是暖冬,找工作之前都需要做好充足的准备,面试的时候才能做到游刃有余。此文是把我最近找工作准备的以及笔试面试中涉及到的手写题做一个总结。给自己,也给需要的同学。手写题是比较好准备的一个环节,大部分公司考察的题也就那么多,大都不会超出范围。 往期"寒冬"三年经验前端面试总结(含头条、百度、饿了么、滴滴等)防抖 & 节流原理都是利用闭包保存变量。防抖是任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行,一般用于输入框实时搜索;节流是规定函数在指定的时间间隔内只执行一次,一般用于scroll事件。 // 防抖function debounce(fn,time){ let timer = null; return function(){ if(timer){ clearTimeout(timer) } timer = setTimeout(()=>{ fn.apply(this,arguments) },time) }}// 节流function throttle(fn,time){ let canRun = true; return function(){ if(!canRun){ return } canRun = false; setTimeout(() => { fn.apply(this,arguments); canRun = true; },time) }}深拷贝深拷贝是一个老生常谈的问题。几年前面试就考,现在面试仍然会考。主要考察的是递归、数组和对象的存储。 function deepClone(obj) { var result = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object' && obj[key]!==null) { result[key] = deepCopy(obj[key]); } else { result[key] = obj[key]; } } } return result; }function deepClone(arr){ return JSON.parse(JSON.stringify(arr))}数组乱序乱序也是常考的一道题。 ...

October 16, 2019 · 2 min · jiezi

寒冬三年经验前端面试总结

前言跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。 2019也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。 面试准备面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。 笔试题笔试题一般考的都是基础知识,复习基础知识建议看书,高程和你不知道的JS都行,会讲的比较细。 CSScss基本上每个公司也都会问,但是问的不会很深,都是一些常见的问题。 盒模型垂直居中方法三栏布局选择器权重计算方式清除浮动的方法flex什么是BFC、可以解决哪些问题position属性如何实现一个自适应的正方形如何用css实现一个三角形手写题手写题每个公司都会有,范围也比较固定,如果之前好好准备的话,应该没什么问题。 防抖和节流深拷贝数组去重、数组乱序手写call、apply、bind继承(ES5/ES6)sleep函数实现promise实现promise.all实现promise.retry将一个同步callback包装成promise形式写一个函数,可以控制最大并发数jsonp的实现eventEmitter(emit,on,off,once)实现instanceof实现new实现数组flat、filter等方法lazyManES6现在基本上都会使用ES6开发。ES6也成为了一个面试必考点。一般面试官都会问用过ES6的哪些新特性,再针对你所回答的进行深入的提问。 let、const、var区别箭头函数与普通函数的区别变量的结构赋值promise、async await、Generator的区别ES6的继承与ES5相比有什么不同js模块化(commonjs/AMD/CMD/ES6)浏览器相关知识浏览器相关知识几乎是每个公司都会问到的考点,里面涉及的东西也比较多。其中缓存、http2、跨域必问。 从输入URL到呈现页面过程强缓存、协商缓存、CDN缓存HTTP2HTTP状态码三次握手与四次挥手跨域(JSONP/CORS)跨域时如何处理cookie垃圾回收机制web安全一般我都会从xss和csrf说起。 https什么是xss,如何预防什么是csrf,如何预防为什么会造成csrf攻击事件循环事件循环绝对是一个必考题。其中涉及到宏任务、微任务、UI渲染等的执行顺序,浏览器端的必须要掌握,node端的有精力的最好也能掌握。 框架(vue)因为我一直用的都是vue框架,所以问的也都是跟vue相关的。vue中的高频题也不外乎双向绑定、虚拟dom、diff算法这些。 watch与computed的区别vue生命周期及对应的行为vue父子组件生命周期执行顺序组件间通讯方法如何实现一个指令vue.nextTick实现原理diff算法如何做到的双向绑定虚拟dom为什么快如何设计一个组件webpackwebpack也基本上成了必考的内容,一般会问是否配置过webpack、做过哪些优化之类的。 用过哪些loader和pluginloader的执行顺序为什么是后写的先执行webpack配置优化webpack打包优化(happypack、dll)plugin与loader的区别webpack执行的过程如何编写一个loader、plugintree-shaking作用,如何才能生效性能优化首屏加载如何优化一个网页从请求到呈现花了很长时间,如何排查因为之前的经历大部分都集中在PC端,所以移动端的经验比较少。面试官也不会一直问你移动端的东西,问也就问一些常见的问题,比如1px问题、如何适配等。react用的也不多,问的也不多,也就会问问react与vue的对比之类的问题。 基本的问题过了之后,有的面试官还喜欢问一些开放性的问题。比如平时都是如何学习的、最近了解了什么新技术、未来的职业规划、为了达到这个目标目前做了什么努力等等。 总结的基本上就是这么多了,上面问题的答案我也会陆续给出,给大家一个参考。喜欢的可以点个收藏哈~最后预祝看了此篇文章的小伙伴们都能收获多多的offer,找到自己满意的工作~

October 7, 2019 · 1 min · jiezi

2019年前端笔试题

什么是web标准?WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为 (Behavior)。 对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如 W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。 请解释一下DOCTYPE的作用,有DOCTYPE和没有DOCTYPE有什么区别?<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。 XHTML与HTML有什么区别 XHTML 元素必须被正确地嵌套。XHTML 元素必须被关闭。标签名必须用小写字母。XHTML 文档必须拥有根元素。严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。 当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性。为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式。 在标准模式中,浏览器根据规范呈现页面;在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法。如果XHTML文档包含形式完整的DOCTYPE,那么它一般以标准模式 呈现。对于HTML4.01文档,包含严格DTD的DOCTYPE常常导致页面以标准模式呈现。包含过渡DTD和URI的DOCTYPE也导致页面以标准 模式呈现,但是有过渡DTD而没有URI会导致页面以混杂模式呈现。DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。根据DOCTYPE是否存在选择呈现模式,被称为DOCTYPE切换或DOCTYPE侦测。DOCTYPE切换是浏览器用来区分遗留文档和符合标准的文档的手段。无论是否编写了有效的CSS,如果选择了错误的DOCTYPE,那么页面就将以混杂 模式呈现,其行为就可能会有错误或不可预测。因此一定要在每个页面上包含形式完整的DOCTYPE声明,并且在使用HTML时选择严格的DTD。写出3个使用this的典型应用 (1)在html元素事件属性中使用,如: <input type=”button” onclick=”showInfo(this);” value=”点击一下”/>(2)构造函数 function Animal(name, color) { this.name = name; this.color = color;}(3)input点击,获取值 <input type="button" id="text" value="点击一下" /><script type="text/javascript"> var btn = document.getElementById("text"); btn.onclick = function() { alert(this.value); //此处的this是按钮元素 }</script>(4)apply()/call()求数组最值 var numbers = [5, 458 , 120 , -215 ]; var maxInNumbers = Math.max.apply(this, numbers); console.log(maxInNumbers); // 458var maxInNumbers = Math.max.call(this,5, 458 , 120 , -215); console.log(maxInNumbers); // 458数组去重 ...

June 13, 2019 · 3 min · jiezi

机试题-三星

3月1日,西安三星研究所公司机试。之前HR介绍,机试题主要考察分析和逻辑能力,不会用到复杂的算法,而且现场也不能使用除了输入输出流之外的其他的库或包。总体过程:在公司的一间机试屋子考试,有VisualStudio和Eclipse两种编译器可选。三星机试有专门的系统,可以查看题目,并且在下方编程(没有提示,得全程手打,而且不提醒语法错误,建议用编译器),该页面同时可以进行测试案例调试,运行后可得编译结果(会提示语法错误和异常)提供参考。机试总共3小时,系统界面和题目都是英语,手机得飞行模式,现场提供纸笔。题目:原题记不太清了,大致意思如下:给一个10×10的表格(grid),其中放置有2×1的方块(blocks),方块和横竖放置。让表格中的方块自由下落(类似俄罗斯方块),堆积在底部。表格中有方块占有的格子用1表示,没有的用0表示。用数字0-10表示下落后,每列的方块高度。注:题目要求方块不能全部靠在左侧、右侧、上侧或下侧,而且下边这种连续放置方块的情况也不允许(题目中英文没全看懂,个人理解)。这个条件尤其要注意,中途写完程序,就是忽略了这个约束,结果老是不对。输入输出1、Input0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0…… 共10个case2、Output*1 1 2 2 1 2 1 1 0 3 0 0 …… 10个case,每个case的结果都按行输出(*1表示case1) ...

March 1, 2019 · 1 min · jiezi