当前位置:首页 » 网页前端 » web后端开发面试
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web后端开发面试

发布时间: 2022-04-28 06:05:45

1. web后端开发要考什么证书证书 知乎

IT行业一般是不看什么证书的,去公司面试的时候都不怎么问证书什么的,主要还是看你技术水平和工作的项目经验。我面试的很多家公司都没有问我要过什么证书,都是问我技术和工作项目经验,所以我也没有考什么证书,我身边做开发的朋友也没有考过证书。

2. 有没有适合java初学者的小项目,综合性比较强的,web后端,推荐几个,面试用

1、注册登录系统,几乎每个网站都会有这个模块,是初学者不可绕过项目,的一定要了然于心,无论是servlet+jdbc实现,还是struts2+hibernate实现都要滚瓜烂熟
2、网上商城,里面包含两个经典的模块,购物车和在线支付,这个项目是初学者第一个项目的不二之选
3、在线相册系统,涉及到文件的上传下载,这考验你对JavaIO的熟悉程度,也是很不错的选择
4、其外,你还可以做一下图书管理系统,就是模仿图书馆的管理系统,也很考验人
最后:只要你遵循MVC的设计理念,搞懂各层之间的传值方法,面试就不会慌

3. 什么是网页的前端和后端开发

1.前端框架一般指用于简化网页设计的框架,比如,jquery,extjs,bootstrap等等,这些框架封装了一些功能,比如html文档操作,漂亮的各种控件(按钮,表单等等)。

2. 使用前段框架可以降低界面开发周期和提高界面的美观性。

3. 有些框架比较轻量,比如jquery,有些框架比较重量,比如extjs。一般来说重量的框架会封装更多的功能,比如extjs,封装的grid控件有很强的数据展示和操作功能。

1.对用户的价值:

大部分产品对用户的核心价值是功能和内容提供的,而不是由表现层和交互。譬如支付、电商、新闻、交友。

后端解决有还是无的问题,开天辟地。

前端解决有了以后好用的问题,锦上添花,在竞争激烈的领域确实至关重要。

2.技术广度和难度:

广度上后端工作在服务器领域,能控制的硬件基本没有极限,CPU、存储、网络、集群等等,因此技术领域极广。一个优秀的后端需要掌握或了解大量技术如:并发、业务架构、数据库、几打流行框架、性能调优、分布式计算、集群架构、容灾、安全、运维等等,一层挖透了还有下一层。几十年计算机发展历史中大量的技术沉淀在服务器端。

Web前端一直工作在一个浏览器盒子里,先天不足,能承载的可能性太小,技术广度不足。

深度上,现代计算机领域的难题如大规模负载,海量数据处理,实时计算也是后端的,前端集中在表示层,这一层虽然也很复杂,但能称之为难题的技术几乎没有,也很容易复制。

前端要说深度也不是没有,但这一步需要跨到图形领域(如网页游戏),不是常见场景。

说到底前端代码能控制的硬件确实不如后端,因此在技术上,前端更容易。现在为什么说前端会比后端更值钱呢?那是因为前端对硬件的控制能力提升了(html5 odejsmobile),而后端分化得比较厉害,有一批后端专门只写业务逻辑,框架是别人写的,系统架构是别人搭的,服务器跑在云里,连机器物理地址都不知道。世人眼里可能觉得这种写MVC代码的人才是后端,这种被限制在一个“虚拟盒子”里的后端确实不怎么难上手。

一般而言网上说的互联网行业的技术含量排名大概是这样:

产品经理<设计师<前端<后端<其他更高级职位,比如算法工程师等等。

在广大中小公司,很多产品经理都是不会代码,不会设计。 很多技校学艺术设计的毕业生,当上了美工。这些都是真,所以能力低,干的人多,自然就低。然而,你问Google设计师挣多少了嘛?

门槛低不等于技术含量低。

4. C++ 后台开发面试时一般考察什么

C++一般是系统及服务端的大型开发,一般来说面试考察的内容一般是比较多的。举例来说
1. C++基本的认识,问得比较多的是指针、多态(虚函数表、内存 layout等)、作用域、内存的管理等等。(通常只有宣称熟悉 C++或者简历中有很多 C++项目的人,我才会把这个当做一个重要的方面考察;对语言细节研究不深入,或者一直用其它语言比如 go/java 之类的,那也无妨,这块可以稍微放宽要求。)

2. 算法和数据结构,数据结构我比较关注哈希、优先级队列等,算法则是字符串处理、简单的 DFS、BFS、动态规划都有

3. 系统的知识:进程、线程、协程、锁的使用、消息队列、共享内存、还有网络协议、epoll、select等。顺便会考察一些处理问题的基本思路,比如通过哈希来划分、通过队列来序列化操作等等。此外,往往很多同学的项目经历中,有很多点可以结合系统的知识来考察,看看是否真的做过项目。比如我就碰到过自己写过 web server 的,搞过 key-value 数据库的,声称读过 redis 源码的,这些很适合配合系统知识考察,确认是不是真的做过这些项目,理解如何。

4. 和应聘者背景经历有关的知识,比如学信息安全,刚好是我的专业,我会问一些简单的安全知识,比如缓冲区溢出、sql 注入、虚拟机、https、数字签名原理等等。当然,后面从事了个性化推荐有关的工作,机器学习也稍微懂一点,偶尔可以聊聊。这个主要是发现一些学习态度也特别好,但是又想做后台的同学。

5. 如何面试Python后端工程师

一.语言
1.推荐一本看过最好的python书籍? 拉开话题好扯淡
2.谈谈python的装饰器,迭代器,yield?
3.标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?
4.python适合的场景有哪些?当遇到计算密集型任务怎么办?
5.python高并发解决方案?我希望听到twisted->tornado->gevent,能扯到golang,erlang更好
二.操作系统
可以直接认为是linux,毕竟搞后端的多数是和linux打交道。
1.tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗?
2.time_wait是什么情况?出现过多的close_wait可能是什么原因?
3.epoll,select的区别?边缘触发,水平触发区别?
三.存储
存储可能包含rdbms,nosql以及缓存等,我以MySQL,redis举例
mysql相关
1.谈谈mysql字符集和排序规则?
2.varchar与char的区别是什么?大小限制?utf8字符集下varchar最多能存多少个字符
3.primary key和unique的区别?
4.外键有什么用,是否该用外键?外键一定需要索引吗?
5.myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?
6.索引有什么用,大致原理是什么?设计索引有什么注意点?
redis相关
1.什么场景用redis,为什么mysql不适合?
2.谈谈redis的事务?用事务模拟原子+1操作?原子操作还有其它解决方案吗?
3.redis内存满了会怎么样?
四.安全
web安全相关
1.sql注入是怎么产生的,如何防止?
2.xss如何预防?htmlescape后能否避免xss?
3.csrf是什么?django是如何防范的?
密码技术
1.什么是分组加密?加密模式有哪些?ecb和cbc模式有什么区别?为什么需要iv向量?
2.简单说说https的过程?
3.对称加密与非对称加密区别?
3.如何生成共享秘钥? 如何防范中间人攻击?
五.杂
是否关注新技术啊?golang,Rust是否了解?numpy,pandas是啥鸟?
是否紧跟时代潮流?逛不逛微博,刷不刷知乎?
可能你觉得我问的好细,但这好多都是平常经常遇到,并需要解决的,细节更能体现一个人。
如果你觉得小kiss,欢迎投简历给我[email protected],龙图游戏运营支持中心数据分析部招人;觉得有点问题,那还等什么,赶快来和我交流交流。
更新:讨论区挺热闹,有人说好简单,有人说好难,其实我觉得这只适合面试2~3年工作经验的后端工程师。真的没有问
很难的题目,只是可能你平时没有注意。
在这里我推荐几本书吧
python参考手册,绝对让你更上一层楼
图解密码技术,密码入门不二之选
mysql技术内幕第五版,有点厚当手册读读,要有耐心,高性能mysql也强烈建议读读
effective tcp/ip programming
为什么评论区有这么大差异?我想是个人经历不一样吧,如果是搞web的对操作系统这块和密码技术会偏弱,但如果是系统工程师或是游戏服务端这块会明显偏强。
六.后记
最近我也面试了不少童鞋,我发现能达到要求的真的少之又少,很多hr都说Python是最难招聘的岗位,我想是有道理的,这真的很值得我们去深思?
我想有一部分原因是Python这门语言造成的,会写Python的人很多,但写的好的人很少,大部分都把Python当做脚本来写,缺乏面向对象,模式的思想。想想Java,大家都习惯了接口,实现分离,设计模式在Java中也喊了很多年,尤其是ssh三大框架一出,用着用着就理所当然的认为就该这么做,虽然也有点坏处,但对企业级Java开发无疑是一大进步。
反观Python,尤其是生成器,协程,元类给Python注入了很大的灵活性,想写的Pythonic有不小难度,但其实Python高级特性就那么几个,干掉了也就没有了。
当你觉得Python遇到了瓶颈,不妨停下来好好想想。研究研究设计模式,想想重构,了解领域驱动设计,敏捷开发,再回来读读以前写的代码,当眼界变高了,代码也就美了。
当然思想的提高不是一朝一夕,模式,原则会经常让你纠结,纠结就会思索,思考就走出了自己的路,当然条条大路通罗马。
数据库等存储技术是研发工程师迈不过的坎,对关系数据库以mysql举例来说,你必须清楚的知道什么字段选择什么类型,类型字节大小,限制条件,这东西也很容易理解,多想想即可,比如set类型,要支持交并等操作,1个字节只能存8个类别。数据类型搞定了,下面就是索引了,mysql索引种类?主键,唯一索引,普通索引。索引类别,BTree索引,hash索引。索引的优缺点,mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情况,比如mysql子查询慢等。其实到这里研发工程师就差不多,当然你可以继续深入下去,比如读写分离,集群管理,甚至一些参数调优。

6. 面试Python后端工程师,主要注意准备什么

Python是人工智能时代最佳的编程语言,它语法简洁、通俗,语言结构清晰,吸引了很多人加入学习。想要快速就业拿高薪,基础技能很重要,但面试技巧也不容忽视。
如何参加面试
收到面试通知,如有时间缓冲,尽量在2-3天内去参加面试。切忌收到电话通知当天去参加面试。
3、提前了解公司类型
不同的公司类型Python技术难度、面试风格都有较大差异,请提前熟知:
资深互联网:技术前沿、全面;
外企500强:注重技术+管理;
创业融资公司:技术全面扎实。
4、了解岗位需求
技能需求:如工作经验1-3年;注意:也包括在校期间有效的实际项目经验。
非技能需求:外语(外资企业更加重视)、团队、管理、学习能力等。
5、项目经验梳理
项目技能:项目架构+数据库设计+开发语言;
领域知识:项目针对特定行业的背景信息;
项目说辞:想好如何直接有效的介绍项目。
当然,面试准备的再充分,如果你的技能达不到企业要求,那也是白费功夫。如果你想快速系统的学习Python技能,掌握企业所需的技术,可以选择专业学习一下。

7. 前端面试 问什么问题

web前端面试会问人事方面的内容和web前端技术的内容;

人事的面试

web前端人事面试方面,需要注意如何自我介绍、性格有哪些优劣势、职业规划方向是什么、你的特长是什么、对于加班之类你是怎么看待等人事面试内容;

web前端技术的面试

技术面试,需要注意HTML+CSS+JavaScript以及JS主流框架的使用,比如Vue、React等,前端相关技术,比如tcp握手协议、网络安全、后端技术等;

对于web前端面试准备,建议你去看“决胜前端”(min app),它里面包含了很多web前端技术面试、人事面试等面试真题,而且针对面试题做了详细的分析与解答。

我给你截图看一下例子吧

8. Python后端工程师面试题目有哪些

一.语言
1.推荐一本看过最好的python书籍?
2.谈谈python的装饰器,迭代器,yield?
3.标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?
4.python适合的场景有哪些?当遇到计算密集型任务怎么办?
5.python高并发解决方案?我希望听到twisted->tornado->gevent,能扯到golang,erlang更好
二.操作系统
可以直接认为是linux,毕竟搞后端的多数是和linux打交道。
1.tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗?
2.time_wait是什么情况?出现过多的close_wait可能是什么原因?
3.epoll,select的区别?边缘触发,水平触发区别?
三.存储
存储可能包含rdbms,nosql以及缓存等,我以mysql,redis举例
mysql相关
1.谈谈mysql字符集和排序规则?
2.varchar与char的区别是什么?大小限制?utf8字符集下varchar最多能存多少个字符
3.primary key和unique的区别?
4.外键有什么用,是否该用外键?外键一定需要索引吗?
5.myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?
6.索引有什么用,大致原理是什么?设计索引有什么注意点?
redis相关
1.什么场景用redis,为什么mysql不适合?
2.谈谈redis的事务?用事务模拟原子+1操作?原子操作还有其它解决方案吗?
3.redis内存满了会怎么样?
四.安全
web安全相关
1.sql注入是怎么产生的,如何防止?
2.xss如何预防?htmlescape后能否避免xss?
3.csrf是什么?django是如何防范的?
密码技术
1.什么是分组加密?加密模式有哪些?ecb和cbc模式有什么区别?为什么需要iv向量?
2.简单说说https的过程?
3.对称加密与非对称加密区别?
3.如何生成共享秘钥? 如何防范中间人攻击?
五.杂
是否关注新技术啊?golang,rust是否了解?numpy,pandas是啥鸟?
是否紧跟时代潮流?逛不逛微博,刷不刷知乎?
可能你觉得我问的好细,但这好多都是平常经常遇到,并需要解决的,细节更能体现一个人。
如果你觉得小kiss,欢迎投简历给我[email protected],龙图游戏运营支持中心数据分析部招人;觉得有点问题,那还等什么,赶快来和我交流交流。
更新:讨论区挺热闹,有人说好简单,有人说好难,其实我觉得这只适合面试2~3年工作经验的后端工程师。真的没有问
很难的题目,只是可能你平时没有注意。
在这里我推荐几本书吧
python参考手册,绝对让你更上一层楼
图解密码技术,密码入门不二之选
mysql技术内幕第五版,有点厚当手册读读,要有耐心,高性能mysql也强烈建议读读
effective tcp/ip programming
为什么评论区有这么大差异?我想是个人经历不一样吧,如果是搞web的对操作系统这块和密码技术会偏弱,但如果是系统工程师或是游戏服务端这块会明显偏强。
六.后记
最近我也面试了不少童鞋,我发现能达到要求的真的少之又少,很多hr都说Python是最难招聘的岗位,我想是有道理的,这真的很值得我们去深思?
我想有一部分原因是Python这门语言造成的,会写Python的人很多,但写的好的人很少,大部分都把Python当做脚本来写,缺乏面向对 象,模式的思想。想想Java,大家都习惯了接口,实现分离,设计模式在Java中也喊了很多年,尤其是ssh三大框架一出,用着用着就理所当然的认为就 该这么做,虽然也有点坏处,但对企业级Java开发无疑是一大进步。
反观Python,尤其是生成器,协程,元类给Python注入了很大的灵活性,想写的Pythonic有不小难度,但其实Python高级特性就那么几个,干掉了也就没有了。
当你觉得Python遇到了瓶颈,不妨停下来好好想想。研究研究设计模式,想想重构,了解领域驱动设计,敏捷开发,再回来读读以前写的代码,当眼界变高了,代码也就美了。
当然思想的提高不是一朝一夕,模式,原则会经常让你纠结,纠结就会思索,思考就走出了自己的路,当然条条大路通罗马。
数据库等存储技术是研发工程师迈不过的坎,对关系数据库以mysql举例来说,你必须清楚的知道什么字段选择什么类型,类型字节大小,限制条件,这 东西也很容易理解,多想想即可,比如set类型,要支持交并等操作,1个字节只能存8个类别。数据类型搞定了,下面就是索引了,mysql索引种类?主 键,唯一索引,普通索引。索引类别,BTree索引,hash索引。索引的优缺点,mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情况,比如mysql子查询慢等。其实到这里研发工程师就差不多,当然你可以继续深入下去,比如读写分离,集群管理,甚至一些 参数调优。

9. 前端好还是后端

前后端应该都挺有发展前景,相对来说前端会比较简单一点。但是现在对于同个层次的人,一般公司前后端待遇都差不多,待遇好的肯定是你技术过硬的。那就要看自己的爱好了。以下是web前端开发和java后端开发两者的分析。

具体步骤

  • 首先说JAVA,JAVA是作为后端开发的。现在后端开发主要是PHP和JAVA,当然还要加上数据库MySQL、Oracle。PHP比较适合交互比较少的后端,适合小规模的应用。JAVA做后端安全性、稳定性都较好,所以大、中企业用JAVA开发。当然后端开发还有C++等语言,C++的特点是开发快、成本低,一些手机游戏就用C++作为后端语言。

  • Web前端主要用的语言是Html5、CSS3、JavaScript,还要加上AJAX。前端开发还有什么前端呢?移动应用(APP)前端。2015年之前,开发APP的前端,要用Android和IOS,而且还必须分别开发。

  • 2015年开始,兴起了APP前端统一开发,比如MUI框架、react native。这两种开发我都涉及到,原生android我也做过几款APP。MUI开发用的就是Web前端的那一套东西,只不过封装了很多的类。react native开发模仿的就是Web前端开发,用的语言是ES5,ES6。你网络上查一查就知道ES跟JS其实没啥区别。

  • 所以,要说哪个有前途。真不好说,因为这两个技术就是相辅相成的。现在学前端就是从 Web前端开始。但是对于个人来说,从事前端或者后端还是有区别的。前端开发,对于有美术功底的人是有优势的,后端开发适合编程技术功底扎实的人。

10. 如何面试后端程序员

  • 计算机网络常见面试点总结

    计算机网络常见问题回顾

    2.1 TCP、UDP 协议的区别

    2.2 在浏览器中输入url地址 ->> 显示主页的过程

    2.3 各种协议与HTTP协议之间的关系

    2.4 HTTP长连接、短连接

    2.5 TCP 三次握手和四次挥手

  • 三 Linux

    3.1-简单介绍一下-linux-文件系统?

    3.2 一些常见的 Linux 命令了解吗?

  • 四 MySQL

    4.1 说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解

    4.2 数据库索引了解吗?

    4.3 对于大表的常见优化手段说一下

  • 五 Redis

    5.1 redis 简介

    5.2 为什么要用 redis /为什么要用缓存

    5.3 为什么要用 redis 而不用 map/guava 做缓存?

    5.4 redis 和 memcached 的区别

    5.5 redis 常见数据结构以及使用场景分析

    5.6 redis 设置过期时间

    5.7 redis 内存淘汰机制

    5.8 redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)

    5.9 缓存雪崩和缓存穿透问题解决方案

    5.10 如何解决 Redis 的并发竞争 Key 问题

    5.11 如何保证缓存与数据库双写时的数据一致性?

  • 六 Java

    6.1 Java 基础知识

    6.2 Java 集合框架

    6.3 Java多线程

    6.4 Java虚拟机

    6.5 设计模式

  • 七 数据结构

  • 八 算法

    8.1 举个栗子(手写快排)

  • 九 Spring

    9.1 Spring Bean 的作用域

    9.2 Spring 事务中的隔离级别

    9.3 Spring 事务中的事务传播行为

    9.4 AOP

    9.5 IOC

不需要写代码就能衡量候选人的方法可能有一万种。我常用的三个主要方法可以覆盖许多不同的技能。在面试过程中,我们会谈论候选人的经验,要求他们做一些代码审查,并与别人合作设计一个系统。

下面我会详细解释这个过程。

我试图通过这些方法找到真正能够胜任技术工作的候选人,并且他们必须能在单纯的编程技能之外给团队带来价值。通常在一次面试中我能在大约一个小时内覆盖所有三个部分。我有信心这些信息能让我找到好的候选人。

1、深入挖掘他们的经验

许多团队已经这样做了。他们会在面试一开始花几分钟,询问候选人之前的工作,他们对工作的态度,等等。大多时候这就像随意谈话一样。

但这是不对的。

记住这是面试。你需要尽可能地理解他们构建系统时使用的技术。

为了做好这一点,你需要在面试开始之前仔细阅读他们的简历。这不是开玩笑,在面试开始之前至少花上10分钟仔细阅读(不是略读)简历,如果花30分钟时间则最好。要从简历中尽可能多了解些他们之前的项目,Google一下看看能否找到他们项目的公开信息。面试时挖掘背景信息所花的时间越少,就越能获得好的效果。

在面试中,要求候选人谈谈他最近最感兴趣的项目。要练习主动的倾听,要学会参与。假装你是他团队中的一员,或者假装你们是在做架构审查。你要努力了解他们构建的东西以及构建的方法。这样做的好处和坏处是什么?要让候选人知道,不知道答案无所谓,但重要的是能勾起你的好奇心。

下面是我认为能获得好的答案的问题:

  • 你在项目中的职责是什么?这个问题本身并不是决定性的。即使在项目中承担的职责很小,他们也可能很适合你们的团队。你的候选人也许正是因为没能获得重要的职责而在寻找新的机会。因此,知道他们过去的职责会很有帮助。

  • 你从他人那里获得了什么帮助?无法感受他人的帮助是个极其危险的信号。即使是个人项目,也一定需要别人的帮忙。你肯定不想要一个以自我为中心的同事。

  • 给我介绍下那个功能的工作原理。解释下数据的来源和去向、存储方式以及这一切能带给最终用户的好处。这个问题的答案足以吸引你的好奇心。

  • 这个项目中最糟糕的技术债务是什么?好的工程师必须理解他们做出决定时需要付出的代价。问完这个问题,可以继续询问他们怎样改正这些问题,或者尚未改正的理由。

  • 有没有出过生产环境下的bug或服务中断?测试下他们是否理解bug的原因,以及团队解决bug的方法。他们是否提前预期到了bug?下次怎样才能避免同样的问题发生?

  • 这一部分面试能让你直接了解候选人的经验。做好这一部分还能让你了解他们如何感谢别人或责备别人。你将会了解到他们如何在两难的工程问题上做出抉择,他们会与你分享最近的教训,他们与别人沟通技术的能力应该也很明显。

    如果他们选择了不太适合的项目,可以考虑谈论其他项目。所谓不太适合的意思是项目不够复杂或他们记不清的情况。

    注意,这一步要避免询问类似于“告诉我你解决过的最难的bug”之类的问题。要求别人回忆系统的某一部分的具体原理会带来大量的虚假负面判断。人们不可能拥有他们修复的bug相关的一切知识,这种问题会给面试过程带来很大压力。

    2、让他们审查你们的代码

    这项活动一半是代码审查一半是角色扮演。你可以借此筛选出那些能够提升团队整体代码质量并促进办公室氛围的人。

    下面是代码审查过程中需要关注的一些方面:

  • 他们怎样与代码的“作者”交流?交流是否有用?是否高效?是否友善?

  • 他们会着重哪些问题?是否能明确表达出他们的疑问?他们是否会立即指出哪些无关紧要的问题?

  • 他们是否善于阅读自己不熟悉的代码?

  • 这个方法需要提前准备很多东西。你需要找到或编写一段代码供候选人审查。你还需要为你希望候选人找出的问题创建一个优先级列表。不要让面试管当场出题,一定要事先准备好。

    在选择需要审查的代码时,不要选择产品代码。你的候选人没有你所拥有的背景知识,这样做实际上是将候选人与你的同事比较,而不是与其他候选人比较。

    努力降低代码示例中的复杂度。面试的时候,候选人没有太多时间阅读代码,而且很可能他们并没有想到会做代码审查。热身就要花很长时间。

    在代码中加入一两个真实的bug,但不要强调找bug。一般来说,代码审查并不是个好的找bug方法,特别是审查者从来没有见过代码的情况下。能自证的bug(如给需要数组的函数传递字符串)最好。在你的优先级列表中,bug的优先级应该是最低的,bug应该是给极其优秀的人的加分项。

    最后,代码应该做一些实际的事情。如果你的公司很出名,那可以选择你的产品简化版本。但如果你需要花大量时间为候选人提供背景信息的话还是算了。

    最好的选择要么是虚构的代码(也许可以选择本文竭力避免的代码面试中用到的代码),要么是开源代码中的一个拉取请求。

    一旦决定了要审查的代码,你应该期待候选人找出下面这些东西:

  • 过于糟糕的拉取请求的描述或提交信息;

  • 能用但无法自洽的代码;

  • 过于复杂的代码(需要重构的代码);

  • 混乱的变量或方法名;

  • 过度设计的代码(即实际上永远不会用到的功能)。

  • 如果代码中没有足够的问题,就多加一些。

    这里有个潜在的问题,我还没有确定的答案。这个问题是:你是否应该提前将代码发给候选人?

    如果你这样做,就又给那些有空闲时间的人以巨大的优势。如果不这样做,就要面临增加面试压力的风险。

    我倾向于后者。好的面试官可以减轻压力,方法之一就是让面试者提前知道他们将做代码审查,你也可以在审查开始之前介绍你的期望。