目录
回复内容:
首页 后端开发 Python教程 从我的知乎笔试题目和答案中可以看出我不足在哪里?

从我的知乎笔试题目和答案中可以看出我不足在哪里?

Jun 06, 2016 pm 04:22 PM
http US

能通过知乎实习生的简历刷选,我想我还是很荣幸的。2012/3/21号晚上8点左右,知乎hr给我发了面试题。之后我花了4天时间做了这些这些题。昨天(2012/3/25)晚上11点10分左右,我修补完bug就发过去了。今天(2012/3/26)早上10点左右,我又发了一次,增加 了些说明。一个小时后,hr回复说我没通过:“由于你的代码思路不够清晰,且是windows编程习惯,与知乎目前的技术架构不符,故你未能通过此次笔试”
下面是我写的代码:
第一题:blog.ideapp.us/?
第二题:blog.ideapp.us/?
我想知道我差在哪里?知乎实习生的要求是什么?python我是基本新学的,4天里每天起早摸黑写代码,一个小时就给我回复,我还是很失落的。
-----------------------------------------------
我还有机会,谢谢大家的鼓励
-----------------------------------------------
我断断续续花了一个星期重写了一遍
第一题: blog.ideapp.us/?
第二题:blog.ideapp.us/?

回复内容:

我觉得误区在“差”这种想法。

面试不是高考,没最终牵手不一定自己就差了,就当参加一次非诚勿扰了吧。 其实我觉得对于实习生来说,编码,windows风格之类的其实都不是很重要的事情。这些东西每个公司的规范都不同,这些东西应该是在公司第一周学会的,而不是在大学四年学会的。而且一周之内就能完全熟悉的玩意儿,根本没必要拿来当作用人标准。
其它的我没太细看,至于对于题目的理解和对面向对象的理解是差了点,但其实问题不大,是可过可不过的情况。杀掉你的人明显偏严格了一点,这东西原因可能有很多原因,可能牛逼的候选人很多,也可能面试官很看中的地方正好是你的缺点,也有可能是你的优点导致的……等等,总之面试就是很主观的选择,没什么大不了的。很多牛人在一个地方被相当看好,在另一个地方却被批得很惨,这都是很正常的,面挂了没缘分而已,并不代表神马,继续努力就是了。 虽然已经单独回过你的邮件,这里再补充一下。
你的代码我昨天都已看过了,答复也是昨天作出的。和hr转述的略有不同,我说的是代码不pythonic,不够清晰,windows编程习惯。

你的代码文档一部分是gbk编码,一部分是utf8编码,一打开都是乱码,不得不手动转码,我读的痛苦你可能理会不到。对初学者我不要求你有多熟悉,但期望看到良好的风格.old style class,大量的staticmethod,邮件脚本的gb2312编码都不是好的习惯。

单从答题情况来说,也不算完全完成要求。第一题,因为都是使用windows路径的关系,linux环境下无法发送附件,这里面sohu邮箱的发送还是不成功的。 第二题,服务端和客户端混在一起的代码,根本无法在任何生产环境使用,不说代码隔离,也至少通过配置或参数分开吧,我还得手动改掉了才能运行,也与题目要求不符。

btw,我认为你的动手能力还是不错的,但是这毕竟不是竞赛,速度什么的不重要,我们更看重好的代码风格及编程习惯,这在一个团体中尤其重要。

update 2013-1-11: 现在回头来看,当时因为没有专门招实习生职位,所以都是卡的正式员工标准。在开始招实习生这近一年收到的诸多笔试中,提问者如果在其中还是比较有优势的,当然有更好的但作为一个从java转python的初学者已经很难得。时机不一样,招的标准也不同, 只能说遗憾了。 1. 除了前端页面以外,代码文件里最好不要出现中文,包括注释,中文非常容易引起诡异问题;
2. 你的代码里过度使用面向对象/类了,Java 痕迹过重,你的很多类完全是通过 @staticmethod 把几个方法集合到一起,导致代码结构很不清晰;
3. 确实是 Windows 编程习惯,把编程作为下一步的发展方向的话,建议早日转向 Linux/Mac 。

我不是知乎员工,以上只是个人看法和建议,仅供参考。 大概看了一下你第一题的代码,有几点愚见,仅供参考。
  1. 过度面向对象。sender、address都可以用字符串搞定,attachments做成文件名字符串的list,没必要全都做成类。
  2. 过度封装。Utils.isFileExist()没必要存在,可以直接os.path.isfile();Utils.regex()也没必要,re.match()搞定。
  3. 过度设计。本来不复杂的事儿有点被搞的太复杂了,在Python里很多事儿都可以用函数搞定,不需要这么多类。400多行代码有点恐怖……如楼上所说,不够Pythonic。
  4. 单元测试。建议看一下unitest模块。
  5. 编码问题。如@杨昆 @吴畅 所说。
看得出lz代码经验比较丰富,只是Python刚入门,还需要时间学习。继续加油吧! 不知道题目是不是指定要python。

不断的强调自己是现学是没意义的,作为面试官,没有能力和必要去考证这一点。

既然指出的问题主要是风格,而你又是现学现卖的语言,那也就是说没有否定你的能力,只是现阶段不适合而已,不必过分纠结。 我用我的人品保证,@杨昆(面试官)不是一个不尊重实习生/面试者的人,相反他是一个待人和善的人,甚至是对生物和善,他是我认识的第一个素食主义者。
我觉得楼主面试失败没有什么问题,面试官是一个hardcore pythoner,注重代码的清晰,单元测试和完整性。然而,他关注点正是楼主的弱项,因此lz被拒我觉得是理所当然的。因为面试不是100分的考试,而更像是恋爱,看面试者和面试官/公司是否match,不是说你算法强项目经验多就一定会要你。

不过我能理解你和楼主的心情,楼主的代码和博客我看了,确实很强,比我见过的大部分学生,我的学生时期都要强。

但我仍然要说,就像大叔控的萝莉对正太说 “你真的很萌,但是对不起,我控的是大叔”

Ps:我们也会从这次面试中吸取经验教训,努力更全面地考察面试者的综合能力,谢谢 别太认真,主要是气质不符合。有很多面试官会认为你不符合他们的团队气质。我不大懂python。但是稍微看了一下。他们所谓的gd2312我个人认为是还是一个比较崩溃的拒绝借口。混用的确不太好。如果应试者能够在提醒之后认识到这点。那么还是非常好的程序员。还有,你晒题目需要征求过面试官同意。windows的确不是一个大问题,一个路径是小问题,但是必须认识到你的程序在linux无法运行。可能有人认为比较致命就是不用linux的程序员不是好程序。如果你能够在windows下编写程序在linux无需调试运行也是非常好的。mozilla公司是相当牛逼,他们也有程序员在windows下编写程序。如果面试官当时有要求说你的程序将部署在linux环境。那么你就必须要考虑linux环境。个人还是坚持认为拒绝你的理由有部分是扯淡。继续坚持,编程不止。 一看你的代码就属于没怎么在Linux编过程的。 大概你期望的是知乎的人给予回答,我不是,抱歉让你失望了。

个人觉得你写注释的风格还是蛮好的,有点过分模块化(个人感觉)。
另外,第一题中,“接受参数输入”这一点你似乎没有达到啊,你好像只实现了一个命令行的邮件发送,而没有简单的“接受参数输入”的接口,就比如说,我现在有:
发件人: ‘sender@mail.com’
密码: ‘password’
收件人:' receiver1@mail.com; receiver2@mail.com;receiver3@mail.com;'
附件:‘file1;file2;file3;’
我该怎么发出去呢?虽然仔细看你的程序是可以搞定的,但是相当于自己写接口了。虽然接口比较容易,但是我作为面试官肯定是不会花时间去琢磨的。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
http状态码520是什么意思 http状态码520是什么意思 Oct 13, 2023 pm 03:11 PM

http状态码520是指服务器在处理请求时遇到了一个未知的错误,无法提供更具体的信息。用于表示服务器在处理请求时发生了一个未知的错误,可能是由于服务器配置问题、网络问题或其他未知原因导致的。通常是由服务器配置问题、网络问题、服务器过载或代码错误等原因导致的。如果遇到状态码520错误,最好联系网站管理员或技术支持团队以获取更多的信息和帮助。

http状态码403是什么 http状态码403是什么 Oct 07, 2023 pm 02:04 PM

http状态码403是服务器拒绝了客户端的请求的意思。解决http状态码403的方法是:1、检查身份验证凭据,如果服务器要求身份验证,确保提供正确的凭据;2、检查IP地址限制,如果服务器对IP地址进行了限制,确保客户端的IP地址被列入白名单或未列入黑名单;3、检查文件权限设置,如果403状态码与文件或目录的权限设置有关,确保客户端具有足够的权限访问这些文件或目录等等。

理解网页重定向的常见应用场景并了解HTTP301状态码 理解网页重定向的常见应用场景并了解HTTP301状态码 Feb 18, 2024 pm 08:41 PM

掌握HTTP301状态码的含义:网页重定向的常见应用场景随着互联网的迅猛发展,人们对网页交互的要求也越来越高。在网页设计领域,网页重定向是一种常见且重要的技术,通过HTTP301状态码来实现。本文将探讨HTTP301状态码的含义以及在网页重定向中的常见应用场景。HTTP301状态码是指永久重定向(PermanentRedirect)。当服务器接收到客户端发

HTTP 200 OK:了解成功响应的含义与用途 HTTP 200 OK:了解成功响应的含义与用途 Dec 26, 2023 am 10:25 AM

HTTP状态码200:探索成功响应的含义与用途HTTP状态码是用来表示服务器响应状态的数字代码。其中,状态码200表示请求已成功被服务器处理。本文将探索HTTP状态码200的具体含义与用途。首先,让我们了解一下HTTP状态码的分类。状态码被分为五个类别,分别是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的响应。而200是2xx中最常见的状态码

如何使用Nginx Proxy Manager实现HTTP到HTTPS的自动跳转 如何使用Nginx Proxy Manager实现HTTP到HTTPS的自动跳转 Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager实现HTTP到HTTPS的自动跳转随着互联网的发展,越来越多的网站开始采用HTTPS协议来加密传输数据,以提高数据的安全性和用户的隐私保护。由于HTTPS协议需要SSL证书的支持,因此在部署HTTPS协议时需要有一定的技术支持。Nginx是一款强大且常用的HTTP服务器和反向代理服务器,而NginxProxy

快速应用:PHP 异步 HTTP 下载多个文件的实用开发案例分析 快速应用:PHP 异步 HTTP 下载多个文件的实用开发案例分析 Sep 12, 2023 pm 01:15 PM

快速应用:PHP异步HTTP下载多个文件的实用开发案例分析随着互联网的发展,文件下载功能已成为很多网站和应用程序的基本需求之一。而对于需要同时下载多个文件的场景,传统的同步下载方式往往效率低下且耗费时间。为此,使用PHP异步HTTP下载多个文件成为了一种越来越常见的解决方案。本文将通过一个实际的开发案例,详细分析如何使用PHP异步HTTP

http请求415错误解决方法 http请求415错误解决方法 Nov 14, 2023 am 10:49 AM

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。

C#中常见的网络通信和安全性问题及解决方法 C#中常见的网络通信和安全性问题及解决方法 Oct 09, 2023 pm 09:21 PM

C#中常见的网络通信和安全性问题及解决方法在当今互联网时代,网络通信已经成为了软件开发中必不可少的一部分。在C#中,我们通常会遇到一些网络通信的问题,例如数据传输的安全性、网络连接的稳定性等。本文将针对C#中常见的网络通信和安全性问题进行详细讨论,并提供相应的解决方法和代码示例。一、网络通信问题网络连接中断:网络通信过程中,可能会出现网络连接的中断,这会导致

See all articles