• 如何判断前端开发能力?


    一般来说会问如下几方面的问题:

    • 做过最满意的项目是什么?
    • 项目背景
      • 为什么要做这件事情?
      • 最终达到什么效果?
    • 你处于什么样的角色,起到了什么方面的作用?
    • 在项目中遇到什么技术问题?具体是如何解决的?
    • 如果再做这个项目,你会在哪些方面进行改善?

    技术一面主要判断对基础知识的掌握

    • 描述一个你遇到过的技术问题,你是如何解决的?
      • 这个问题很常见,有没有遇到过很不常见的问题?比如在网上根本搜不到解决方法的?
    • 是否有设计过通用的组件?
      • 请设计一个 Dialog(弹出层) / Suggestion(自动完成) / Slider(图片轮播) 等组件
      • 你会提供什么接口?
      • 调用过程是怎样的?可能会遇到什么细节问题?
      • 技术二面主要判断技术深度及广度

        • 你最擅长的技术是什么?
          • 你觉得你在这个技术上的水平到什么程度了?你觉得最高级别应该是怎样的?
        • 浏览器及性能
          • 一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?越详细越好
            • (这个问既考察技术深度又考察技术广度,其实要答好是相当难的,注意越详细越好)
          • 谈一下你所知道的页面性能优化方法?
            • 这些优化方法背后的原理是什么?
            • 除了这些常规的,你还了解什么最新的方法么?
          • 如何分析页面性能?
        • 其它
          • 除了前端以外还了解什么其它技术么?
          • 对计算机基础的了解情况,比如常见数据结构、编译原理等
        兴趣相关
        • 最近在学什么?接下来半年你打算学习什么?
        • 做什么方面的事情最让你有成就感?需求设计?规划?具体开发?
        • 后续想做什么?3 年后你希望自己是什么水平?
        主动性相关
        • 在之前做过的项目中,有没有什么功能或改进点是由你提出来的?
        • 是否有参与和改进其它开源项目
        还有些与话题无关我就不转了。

        考查要点:
        • 对Web标准的理解
        • 浏览器差异
        • CSS基本功:布局、盒模型、选择器优先级及使用等
        • Javascript 基础、JS面向对象实现原理、闭包机制、作用域
        通常可以做一些小练习来判断TA的水平,js 虽然很灵活,但是具体的实现方式能体现出一个人的全局观,随着代码规模的增长,复杂度增加,如何合理划分模块实现功能和接口的能力比较重要。这里有一份前不久我出的试题,难度不算大,另存为html
         
         
        自己总结的面试题,感兴趣的看下。
        HTML+CSS
        1、盒子模型,块级元素和行内元素特性与区别。
        2、行内块的使用,兼容性解决。
        3、清除浮动的方式以及各自的优劣。
        4、文档流的概念、定位的理解以及z-index计算规则&浏览器差异性。
        5、CSS选择器以及优先级计算。
        6、常用的CSS hack。
        7、遇到的兼容性问题与解决方法。
        8、垂直水平居中的实现方式。
        9、常用布局的实现(两列布局、三列适应布局,两列等高适应布局等)。
        Javascript
        1、犀牛书封面的犀牛属于神马品种?(蛋逼活跃气氛用。。。)
        2、常用的浏览器内核。
        3、常用的DOM操作,新建、添加、删除、移动、查找等。
        4、String于Array常用方法。
        5、设备与平台监测。
        6、DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。
        7、jQuery的bind、live、on、delegate的区别(考察点与上一条重叠,切入点不同)。
        8、JS变量提升、匿名函数、原型继承、作用域、闭包机制等。
        9、对HTTP协议的理解。
        10、Ajax的常用操作,JS跨域的实现原理。
        HTML:
        • 语义标签
        • 语义化

        CSS:
        • 动态居中
        • 动画
        • Bootstrap 样式类
        • Preprocessor
        • 兼容性 Hack与特征检测
        • CSS3属性与性能

        JS:
        • Name hoisting
        • Prototype
        • Closure
        • Main loop
        • Promise
        • Delegation
        • Cross domain

        Mobile:
        • 渐进增强
        • 移动端交互
        • 兼容性问题
        • Debug工具 方法

        性能:
        • JS
        • Cache control
        • 性能测试

        ---------

        开发者 - 行业视野

        Libs and Frameworks

        NodeJS
        开发工具与效率
        Workflow - Grunt and all

        Github
        Sites Projects Blogs

        ---------

        工程师 - 产品与团队

        Architecture
        UT E2E

        响应式设计
        系统化设计
        需求评审

        代码管理 - Git SVN 运维
        项目管理 - 项目评估 任务分解 追踪方法
        团队管理 - 标准 流程 文档建设

        技术影响力
        职业发展规划

        ----------------------

        面试者提问

        对面试的评价
        理解偏差最大的地方
        擅长却没有发挥出来的地方

        期望薪资
        期望职责


        1. 主体是看简历发挥,对方写什么就问什么为主:框架、库、浏览器工作原理、NLP、算法、HTTP... 
        2. 辅助问题几乎是我个人必备的问题:为什么做前端,学习前端过程。
        1、跟什么人在一起工作
        2、过去项目的挑战
        3、自学的途径

        3个问题基本上就知道这个人的能力水平和瓶颈了,人的很多局限都是被环境限制的,通过闲聊中夹杂的不经意的问题,候选人的画像就已经很鲜明了。处于当前的环境多长时间,有没有突破环境限制的行动,就能评估出潜力和眼界。

        什么浏览器兼容、作用域、框架等等的东西不会,不记得都可以学,要不了多长时间,关键还是有没有潜力、有没有好的习惯。


        我个人认为比较重要的有以下几点:
        • 热情。前端涉及的知识比较复杂,职业定位非常模糊,需要有足够的热情去完善各个浏览器的兼容性,去推动与RD、PM、UI的协作,最终产出漂亮的产品。
        • 基础。这方面前面已经讲的非常好了,我补充一点:我们会更关注面试者本身学习的方法和深度。例如对于资深面试者会问一些诸如Execution Context、Block Formatting Context之类的问题。理想中的面试者应该具有知其所以然的探索精神。
        • 潜力。我们希望能够找到很有潜力的工程师,例如有很好的计算机基础、ACMer、Unix爱好者、Design爱好者等等。


        如果是我,我会问“js如何实现多重继承”,然后再由这个问题联系到原型链,new机制,函数,作用域链,this,闭包,这些问题可以看出应聘者是不是真正会js还是披着java/c++外衣以为会js。再高级的我会问js设计模式,mvc模式。
        前端工程师,主要工作内容与用户界面的表现紧密联系,但均为在图形上或以其为基础通过某种实现方式去正确、准确呈现什么。之所以以“主要工作”修饰,是因为 node.js / io.js 的出现与发展致使前端被引入服务器端性质的工作内容。

        在能力方面:
        • 对 HTML / CSS / JavaScript 具有专家级别的知识;
        • 有较熟练使用 AngularJS / Ember.js / jQuery 或者其它类库的经验;
        • 较熟悉第三方组件(插件)生态环境及具体案例;
        • 有较熟练使用 Jade / Swig / Handlebars / Mustache 或者其它模板引擎的经验;
        • 有较熟练使用 SASS 或者其它 CSS 预处理器的经验;
        • 有较熟练使用 CoffeeScript 的经验;
        • 对 CSS / JavaScript 设计模式有很好的认识及应用;
        • 对常用数据结构和算法熟悉;
        • 有使用 GruntJS / GulpJS 任务运行器的经验;
        • 有使用 Yeoman 生成器的经验;
        • 有诸如 Bower / Volo / JSPM 等前端静态资源包管理器使用经验;
        • 熟悉本地及远程(甄姬)调试操作;
        • 有 Git 的使用经验;

        意识驱动行为,所以:
        • 有自己的技术信仰;
        • 有渴望尝试新技术的强烈愿景及较强的主观学习、客观探索能力;
        • 拥有令人难以置信的关注细节的精神;
        • 在诸如 Github、Sitepoint 等这样的技术社区活动;

        因为你不是一个人工作,并且要对一个产品付之责任心,所以:
        • 有良好的编程风格和文档习惯;
        • 对模块化开发及相关标准有很好的认识及应用;
        • 有对网页标准和标准制定机构重要性较深刻的理解;
        • 建站过程中考虑其它诸如UI、安全性、高性能、SEO、可维护性以及技术因素等方面;
        • 有跨浏览器(主:兼容性)、跨设备(主:响应式)开发并测试页面的经验;
        • 对网格在WEB设计中的应用有深刻的理解,以及具备系统(有组织)地实现出来的能力;
        • 能够独立工作并做出正确的抉择;
        • 能够适应不断变化的更新 / 扩展 / 改版需求,同时处理多个项目;
        • 能够提供准确的定时估计工作(适应准时交付管理法则);
        • 有与服务器端程序开发人员协同工作的经验;
        • 能够(熟练)阅读英文资料;
        • 有一定的工作压力承受能力;

        然后再为自己从长远打算及加分:
        • 有 NodeJS Web / 服务器 / 客户端应用程序设计、开发、优化经验;
        • 有 MangoDB / Redis 等No SQL 数据库设计、实现、维护经验;
        • 有使用 PhoneGap / Apache Cordova 进行移动应用开发经验;
        • 有浏览器 Addon 扩展(以扩展的形式添加一些为提高用户体验的附加功能)开发经验者;



  • 相关阅读:
    iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
    iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
    iOS开发——UI基础-按钮的创建和设置
    iOS开发——UI基础-Xcode资源拷贝
    机器学习中的数学基础_七月算法4月机器学习班第1次课程笔记
    leetcode--Merge Sorted Array
    leetcode--First Missing Positive
    leetcode--Divide two integers
    leetcode--Implement strStr()
    leetcode--Remove Element
  • 原文地址:https://www.cnblogs.com/jasmine1314/p/5367521.html
Copyright © 2020-2023  润新知