搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
weixin_40725706
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
C语言对链表的基本操作(头插法,尾插法,增加节点,删除节点,链表遍历)_顺序链表c语言版 头插法
2
大数据_什么是数据中台?_大数据中台
3
阿里巴巴面试题- - -Spring篇(四十五)_springalibaba面试题
4
Laravel+vue+element-ui上传图片_element和laravel上传图片
5
9个范例带你入门LangChain
6
编译原理 实验4《递归下降分析法设计与实现》_根据test语言的语法规则,完成test语言的语法分析程序的递归下降流程图的绘制(
7
使用决策树模型Titanic数据集预测_决策树数据集
8
【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output
9
python经典面试题100例 面试宝典_python面试100个经典
10
【Flutter】二十三、Flutter常用组件——抽屉(侧边栏)Drawer_flutter 右侧抽屉怎么手动关闭
当前位置:
article
> 正文
为什么需要笔试,笔试的目的_为什么面试要笔试呢
作者:weixin_40725706 | 2024-06-05 01:39:22
赞
踩
为什么面试要笔试呢
前两天,有好心的网友在博客和Google+留言,催促俺赶紧写
招聘系列
的下一帖。被这一提醒,猛然发现这个招聘系列已经中断半年之久。今天赶紧补上。按照原先的计划,本帖应该开始聊面试的话题,但俺觉得笔试的话题还缺了一块,今天就继续聊俺在笔试方面的经验。
★笔试的目的
在
前面的帖子
,已经跟大伙儿聊了笔试和面试的优缺点以及这两者该如何搭配。考虑到很多网友比较健忘,再略微回顾一下。笔试的成本(这里指时间成本)比较低,所以应该安排在第一轮。通过笔试,至少要能淘汰掉80%以上的应聘者(还记得《
无处不在的二八原理
》吗)。这样一来,面试官才有足够的时间和精力,去筛选剩下的这些人。
因此,笔试题目要有足够好的
区分度
——能够比较明显地体现出应聘者的差别。否则的话,笔试就起不到筛选的效果。
★笔试题的形式
俺出的(针对开发人员的)笔试题,大都只有问答题和程序题,没有选择题或填空题。因为选择题以及大多数的填空题都属于封闭性问题。封闭性问题不但区分度很差,还有诸多缺点(《
开放性问题 vs 封闭性问题
》一文已介绍过,此处不再啰嗦)。
为了让大伙儿有一个直观的认识,俺后面谈的话题,都会拿同一个例子来说事儿。这个例子就是:求质数。(质数也叫素数,小学数学就教过了,俺就不解释了)。为啥要拿这个例子捏?因为这是一个老掉牙的面试题目,貌似国内外很多软件公司的面试题都有它的身影。想必很多人对它都不陌生,俺就不必浪费口水多作解释了。
★思路/想法
说到思路和想法,俺发现不少招聘者在给笔试题打分的时候,都有一个毛病:"只看对错,不管其它"。其实,
"思路和想法"往往比"对错"更重要
——它可以反应出一个人的知识面、创造性等多种素质。而这些素质对于一个开发人员是很重要滴。一个富有idea的程序猿会有更多的发展前景;而一个缺乏idea的程序猿,则会逐渐沦为码农,只能做一些重复性的体力活。
举例说明:
假如有两个应聘者A与B来做这道"求质数"的题目。A用最普通的"试除"来判断质数并且程序实现正确无误;B使用"筛法"来求质数(没听说过筛法的同学,请看"
这里
"的介绍),总体思路对头但程序有些小Bug。那么,俺会更看好B同学。为啥捏?
假如B同学之前就听说过筛法,那说明此人数学的知识面应该比较广;如果B同学之前没听说过筛法,是自己独立想出来的,那这个人应该很有才。反之,用"试除"求质数的思路,太过于普通,小学生都能想到。
由于某CSDN网友居然在留言中说,求质数这道题没啥意义。这让俺情何以堪啊!所以,俺干脆又写了一篇《
求质数算法的N种境界
》,让大伙儿(尤其是菜鸟程序猿)瞧一瞧求质数有多深的奥妙。
★规范性
俺拿到应聘者的答卷时,总是先花几秒钟时间,粗略扫一眼程序题。因为从一个人写的代码,可以很容易地判断出:此人是否养成良好的编码习惯。在筛选程序猿的时候,俺宁可要那种虽然技能差但是习惯好的,也不要那种习惯差但是技能好的。因为"习惯"是一种很顽固的东西——很难通过培训加以改变的;而技能相对来说,比较容易通过培训加以提升。
关于编码的规范性,大致有如下几个方面:
◇排版是否规范
比如:应该缩进的地方是否有缩进?该留空格或空行的地方,是否留出来?
假如某个应聘者写的程序,连最基本的"作用域缩进"都没有体现出来。那么,大致可以判定此人的基本素质很成问题。
◇命名是否规范
比如:命名变量名的时候,是用无意义的单字母变量名,还是用具有可读性的英语单词。说到英语单词,顺便提一下:有些应聘者写的程序里,居然用拼音来命名,真是让人大跌眼镜。
◇是否有恰当的注释
前面2条,大多数人都会留意到。但是很多人都忽略了注释。
通过代码注释,可以看出代码作者的编码功底。新手写代码,要么不写注释,要么注释里尽写些废话,犹如画蛇添足;而优秀的程序猿写的注释言简意赅、恰到好处,有画龙点睛之妙。
★细心
和刚才提到的编码习惯类似,细心也是很难通过培训加以改变的。要看出应聘者是粗心还是细心,只需在面试题目中留一些隐蔽的陷阱即可。
俺在招聘"初级软件工程师"的笔试题中,也用了"求质数"这道题,题目是这样说的:
请实现一个函数,对于给定的整型参数 N,该函数能够打印出自然数中的头 N 个质数。
请大伙儿把题目仔细看喽!然后,大伙儿猜猜看,有多少人审题出错?
据俺保守估计,大概在95%以上!绝大多数的答题者,都把题目错误地理解成:
请实现一个函数,对于给定的整型参数 N,该函数能够打印出头 N 个自然数中的质数。
列位看官扪心自问一下,你是不是也属于看错题目的那95%的人?
这两句话,只不过有3个字挪了一下位置,意义全然不同(再次感叹,汉语真是一门模糊的语言)。俺当初设计这道题目的时候,就是故意留个坑,但是没想到有这么多人掉坑里。
★严密性
可能有同学认为严密性和细心是一回事,其实两者有点区别(当然,细心的人通常也比较严密;反之亦然)。对于软件工程师而言,严密性体现在:编写出的代码是否尽可能地考虑到各种非正常的情况。
一个严密的程序猿,写出来的代码自然也比较严密。严密的代码会带来两大好处:其一,代码的Bug率通常比较低;其二,代码通常比较安全,不易被入侵。关于Bug率,搞开发的应该都晓得;但是代码的安全性,貌似很多开发人员不太清楚。俺简单聊一下。
大概是在安全界混的时间比较长,俺对代码安全性的好处深有体会。大部分入侵者对某个软件系统(比如Web服务器,数据库服务器)的攻击,都是利用了软件代码中隐含的漏洞。而这些漏洞往往是因为编写代码的人考虑问题不严密而留下的安全隐患。
大伙儿不要误会,以为代码安全的问题很遥远,跟自己无关。其实这是一个很普遍的、跨行业的问题。无论是放在互联网上的网站、还是企业的内部系统,或者是大众化的桌面软件,都存在被入侵的风险。因此,编写安全的代码是每个程序猿都面临的问题。
说了这么多,就是想让各位明白,严密性的重要所在。
那么,如何看出应聘者是否具有严密性捏?俺继续以"求质数"作为例子。
在"求质数"的题目中说了:函数参数N是一个整型。那么,一个严密的程序猿,会在函数开头,就检验该参数的有效性。一旦发现参数有问题(比如说,N为0或者N为负数),就给出相应的处理(比如,断言失败或者抛出异常)。因为在这个场景里面,N<=0 是没有意义的,而且有可能引发程序崩溃。
顺便说一下,要编写出足够健壮且不易被入侵的代码(行话叫做"防御性编程"),是很有讲究滴,称得上是门学问。如果有读者感兴趣,俺以后找个机会聊一聊。
★条理性
最后,再稍微说一下条理性。在笔试中,不论是问答题还是程序题,都可以看出一个应聘者的条理性。
有条理的程序猿写出来的代码,层次清晰,条理分明——很易懂且看了很爽;反之,缺乏条理性的程序猿写出来的代码,就像一团乱麻——看起来很吃力且让人抓狂。
由于"条理性"大伙儿比较好理解,俺就不举例了。
★结尾
从应聘者的笔试答题中,还能看出很多其它的信息。不过上述这几条,是俺认为比较重要而且也具有可操作性的。
本系列的下一个帖子,初步打算聊聊:面试过程有哪些讲究?
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/weixin_40725706/article/detail/674319
推荐阅读
article
LVM
逻辑
卷
管理之磁盘
镜像
——
筑梦之路
_
linux
镜像
卷
...
在实际的生产环境,服务器基本都有不同级别的RAID,因此
LVM
的
镜像
卷
使用场景很少。新建4个分区:/dev/sdb1,/...
赞
踩
article
关于
C语言
中
的
前置与后置
自增
++
/自减--
运算符
在
表达式
中求值
的
规律解析_前置
自增
运算符
...
写在前面: 由于本人非计算机专业,所以本文在一些专业用语表述方面可能不够严谨,甚至可能出现一些因个人理解产生
的
偏差,敬请...
赞
踩
article
利用
pytesseract
进行
图片
文字
识别
_
pytesseract
识别
文字
...
pytesseract
是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持...
赞
踩
article
数据库
优化
及
SQL
优化
详解大全_
数据库
调优
和
sql
调优
...
1.查看
SQL
执行频率My
SQL
客户端连接成功后,通过 show [session|global] status 命令...
赞
踩
article
越来越多
的
Java
程序员
转行
Java
大
数据
..._
java
开发转被转为基于
java
的
大
数据
开发...
JAVA
的
精密,强大,拥有其它语言不可替代
的
性能和可维护性,早已经是成为最受欢迎
的
编程语言之一,很多人想进入IT行业,首...
赞
踩
article
(附项目地址)
开源
一套简单的
Java
后台
管理
系统
,
拿来即用
,
特方便_
java
开源
系统
...
前言这套Base Admin是一套简单通用的
后台
管理
系统
,
主要功能有:权限管理、菜单管理、用户管理
,
系统
设置、实时日志
,
...
赞
踩
article
【独家
<
em>OD
<
em>2
<
em>0
<
/em>23C
<
/em>
<
/em>卷真题】2
<
em>0
<
/em>天拿下华
<
em>为
<
/em>OD笔试【不定滑窗】
<
em>2
<
em>0
<
/em>23C
<
/em>-
最
大可
<
em>购买
<
/em>
<
em>的
<
/em>
<
em>宝石
<
/em>数量【欧弟...
橱窗里有一排
<
em>宝石
<
/em>,
<
em>不同
<
/em>
<
em>的
<
/em>
<
em>宝石
<
/em>对应
<
em>不同
<
/em>
<
em>的
<
/em>
<
em>价格
<
/em>,
<
em>宝石
<
/em>
<
em>的
<
/em>
<
em>价格
<
/em>标记
<
em>为
<
/em>。
<
em>宝石
<
/em>可同时出售
<
em>0
<
/em>个或多个,如果同时出售多个,则要求出售
<
em>的
<
/em>宝...
赞
踩
article
《
SpringBoot
篇》01.Spring
boot
超详细入门(
基础
篇)_
spring
boot
...
SpringBoot
是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程...
赞
踩
article
泰坦尼克号
:从灾难
中
学习
机器_
passenger
class
...
泰坦尼克号
:从灾难
中
学习
机器目标 : 使用机器
学习
来创建一个模型,该模型可以预测哪些乘客在
泰坦尼克号
沉船事故
中
幸存下来。...
赞
踩
article
Spring
Boot3.0
(一):
入门篇
_
springboot3.0
...
springboot入门_
springboot3.0
springboot3.0
什么是 Spri...
赞
踩
article
springboot
智慧养老中心
管理系统
...
时代在飞速进步, 每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,智慧养老中心
管理系统
当然不...
赞
踩
article
贝叶斯
决策
理论
(一):
两种
基本
决策
规则_
贝叶斯
决策
理论
中
两种
经典
的
策略包括...
引言 模式识别
的
分类问题是根据识别对象特征
的
观察值将其分到某个类别中去。 统计
决策
理论
是处理模式分类问题
的
基本
理论
之...
赞
踩
article
找出
不是
两个
数组
共有
的
元素
_给定
两个
整型
数组
,本题要求找出
不是
两者
共有
的
元素
。
输入
格式:
输入
分别...
给定
两个
整型
数组
,本题要求找出
不是
两者
共有
的
元素
。
输入
格式:
输入
分别在两行中给出
两个
整型
数组
,每行先给出正整数N(≤20...
赞
踩
article
探索高效
管理
的秘密:
Layui
-
WMS
,一个基于
LayUI
的企业级仓库
管理
系统
...
探索高效
管理
的秘密:
Layui
-
WMS
,一个基于
LayUI
的企业级仓库
管理
系统
项目地址:https://gitcode....
赞
踩
article
【大
数据
】大
数据
之
分布式
协调
服务
--
Zookeeper
教程...
ZooKeeper 是一种
分布式
协调
服务
,用于管理大型主机。在
分布式
环境中
协调
和管理
服务
是一个复杂的过程。ZooKeep...
赞
踩
article
Sql
开发
技巧
...
简介本文主要介绍下述几个
技巧
:使用Row_Number分页事务根据条件刷选记录的
技巧
分页主要是使用了Row_Number...
赞
踩
article
SQL
开发_
使用
sql
语句
划分等级...
SQL
开发第1章:
SQL
概述
SQL
:Structured Query Language结构化查询语言,它是
使用
关系模型的...
赞
踩
article
python
基础-
数据结构
-序列类型
--
list
、
tuple
、
range
...
这篇文章将介绍 Python 中的序列类型,包括通用序列类型、不可变序列类型和可变序列类型,以及它们的构建方式、常见操作...
赞
踩
article
redis
笔记
_
狂神
redis
...
1.Stringset get getset exists append strlen incr decr incrby...
赞
踩
article
大
数据
技术体系梳理...
大
数据
技术体系来一起认识下
大
数据
的技术框架有哪些,它们分别用于解决哪些问题?它们的内在逻辑和适用场景有哪些?OK,一起去...
赞
踩
相关标签
运维
c语言
opencv
人工智能
计算机视觉
验证码识别
数据库
sql
服务器
java
spring
程序员
互联网
源码
算法
华为od
spring boot
后端
贝叶斯决策
模式识别