面试官角度弹面试

http://www.iteye.com/topic/715304

这个帖子的背景是今晚看到je上这张贴:http://www.iteye.com/topic/715256,心血来潮写下的文字,如果能抛砖引玉,能有其他面试官分析一下自己面试时问的问题,那或许是件很有意义的事情。 

    在公司当技术面试官几年间,从应届生到工作十几年的应聘者都遇到过。先表达一下我自己对面试的观点: 

    1.笔试、面试去评价一个人肯定是不够准确的,了解一个人最准确的方式就是“路遥知马力,日久见人心”。通过一、二个小时内的做题、交流,只是没有其他办法下进行的无奈之举,所以通过了面试不代表有多成功,没通过也不代表有多失败。 
    2.好的面试官本身交谈的时候就不应当把自己一个居高临下的角色上,应当把自己和应聘者当做两个做技术的人平等的交流,把自己当作权威往往就会受到观点的角度、语言表达、工作领域的惯性的制约。 
    3.好的考察题目则是大家能经常接触,不同层次的人能有不同层次的答案,能从问题引申出后面继续讨论的话题。 

    举个例子抛砖引玉,下面这个问题是我以前常问的,从应届生到工作十几年的人都问过: 

引用


“地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?”



我自己分析一下这个问题,首先是“什么时候”,不同层次的回答从低到高排列: 

    1.系统空闲的时候。 
    分析:这种回答大约占30%,遇到的话一般我就会准备转向别的话题,譬如算法、譬如SSH看看能否发掘一些他擅长的其他方面。 

    2.系统自身决定,不可预测的时间/调用System.gc()的时候。 
    分析:这种回答大约占55%,大部分应届生都能回答到这个答案,起码不能算错误是吧,后续应当细分一下到底是语言表述导致答案太笼统,还是本身就只有这样一个模糊的认识。 

    3.能说出新生代、老年代结构,能提出minor gc/full gc 
    分析:到了这个层次,基本上能说对GC运作有概念上的了解,譬如看过《深入JVM虚拟机》之类的。这部分不足10%。 

    4.能说明minor gc/full gc的触发条件、OOM的触发条件,降低GC的调优的策略。 
    分析:列举一些我期望的回答:eden满了minor gc,升到老年代的对象大于老年代剩余空间full gc,或者小于时被HandlePromotionFailure参数强制full gc;gc与非gc时间耗时超过了GCTimeRatio的限制引发OOM,调优诸如通过NewRatio控制新生代老年代比例,通过MaxTenuringThreshold控制进入老年前生存次数等……能回答道这个阶段就会给我带来比较高的期望了,当然面试的时候正常人都不会记得每个参数的拼写,我自己写这段话的时候也是翻过手册的。回答道这部分的小于2%。 

PS:加起来不到100%,是因为有确实少数直接说不知道,或者直接拒绝回答的= =# 

    分析第二个问题:“对什么东西”: 

    1.不使用的对象。 
    分析:相当于没有回答,问题就是在问什么对象才是“不使用的对象”。大约占30%。 

    2.超出作用域的对象/引用计数为空的对象。 
    分析:这2个回答站了60%,相当高的比例,估计学校教java的时候老师就是这样教的。第一个回答没有解决我的疑问,gc到底怎么判断哪些对象在不在作用域的?至于引用计数来判断对象是否可收集的,我可以会补充一个下面这个例子让面试者分析一下obj1、obj2是否会被GC掉? 
    class C{ 
         public Object x; 
    } 
    C obj1、obj2 = new C(); 
    obj1.x = obj2; 
    obj2.x = obj1; 
    obj1、obj2 = null; 

    3.从gc root开始搜索,搜索不到的对象。 
    分析:根对象查找、标记已经算是不错了,小于5%的人可以回答道这步,估计是引用计数的方式太“深入民心”了。基本可以得到这个问题全部分数。 
    PS:有面试者在这个问补充强引用、弱引用、软引用、幻影引用区别等,不是我想问的答案,但可以加分。 

    4.从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。 
    分析:我期待的答案。但是的确很少面试者会回答到这一点,所以在我心中回答道第3点我就给全部分数。 

    最后由一个问题:“做什么事情”,这个问发挥的空间就太大了,不同年代、不同收集器的动作非常多。 

    1.删除不使用的对象,腾出内存空间。 
    分析:同问题2第一点。40%。 

    2.补充一些诸如停止其他线程执行、运行finalize等的说明。 
    分析:起码把问题具体化了一些,如果像答案1那样我很难在回答中找到话题继续展开,大约占40%的人。 
    补充一点题外话,面试时我最怕遇到的回答就是“这个问题我说不上来,但是遇到的时候我上网搜一下能做出来”。做程序开发确实不是去锻炼茴香豆的“茴”有几种写法,不死记硬背我同意,我不会纠语法、单词,但是多少你说个思路呀,要直接回答一个上网搜,我完全没办法从中获取可以评价应聘者的信息,也很难从回答中继续发掘话题展开讨论。建议大家尽量回答引向自己熟悉的,可讨论的领域,展现给面试官最擅长的一面。 

    3.能说出诸如新生代做的是复制清理、from survivor、to survivor是干啥用的、老年代做的是标记清理、标记清理后碎片要不要整理、复制清理和标记清理有有什么优劣势等。 
    分析:也是看过《深入JVM虚拟机》的基本都能回答道这个程度,其实到这个程度我已经比较期待了。同样小于10%。 

    4.除了3外,还能讲清楚串行、并行(整理/不整理碎片)、CMS等搜集器可作用的年代、特点、优劣势,并且能说明控制/调整收集器选择的方式。 
    分析:同上面2个问题的第四点。 

    最后介绍一下自己的背景,在一间不大不小的上市软件公司担任平台架构师,有3年左右的面试官经验,工作主要方向是大规模企业级应用,参与过若干个亿元级的项目的底层架构工作。

声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。

推荐链接

 发表时间:2010-07-18  

ps一下:上面这个问题,倒是遇到过应届生给我相当超出预期的答案,工作经验好量化,天分与兴趣不好考察,但往往日后的骨干就要从这种有天分的苗子开始培养起。

  发表时间:2010-07-18   最后修改:2010-07-18

这种题目拿来考应届生,如果来来回回回答的都是深入JVM之类的书本上的,那么也就是靠背出来的,应试能力强而已 

对于应届生,我更关心1。理解能力,2.服从性,3。伪代码能力,其他的么,不能算加分,包括学历 

考5年以内也不合适,一般5年内的同学的工作层次达不到需要研究JVM和底层一些机制的地步,绝大部分的工作能力和长处并不在此,拿这种东西否定一个人,不过是刁难人罢了 

研究JVM和底层的目的是什么,绝不是背几个段子秀一下,其实就一般的工作范围而言,主要是为了调优,考架构师这个层次,这个题目还差不多,但是到这个层次,只是一些书本上的标准回答,又不能满足我了,需要设计一些具体场景,才能看出一个人的能力

 

98%以上的应届生的回答不会和JVM有关系,大多停留在第2点答案的水平,这些答案都符合我对应届生的期望呀。 

但是如果应届生能回答道第3、4点,哪怕是真的看过教程,或者《深入jvm》之类的书跟我复述出来,无论最后是否愿意入职,我都会很乐意和他保持长期联系。 

我面试还经常问一个开放性的问题:“请跟我介绍一下你最近看的一本技术书籍”,很多应届生、应聘者在这个问题上都没有给我留下印象,现在的应届生能看一本书,还把书看成几页纸再用自己的话说出来,说实话已经是一件不太容易的事情。 

对于工作经验实在是没有办法之中去量化能力的一个指标,就在今年上半年,我面过10年经验要价3.5K(是K不是W,是自己开价)的,真的被吓到了。另外我自己的工作年限也还不到5年,没有资格要求别人更多。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试经历—广州YY(欢聚时代)

转载自 面试经历—广州YY(欢聚时代) 上周去YY(欢聚时代)面试JAVA工程师,现在回忆一下当时的面试过程,面试问的问题有:1、常用的集合类HashMap、HashTable、ArrayList、LinkedList、HashSet2、…

mysql binlog 备份恢复数据_Mysql结合备份+binlog恢复误删除操作数据

结合备份binlog恢复数据。场景:昨天晚上做了全备,今天上午用户不小心误删除某张表。解决方案:不建议在原生产环境直接恢复,建议在另一台机器恢复全库日志,然后导入到生产环境。1) 创建表select now();create table itp…

你们也只剩下点赞的交情

作者|北及企鹅 微信|叁禁 01 你们有没有这样的朋友,他们在你的世界里扮演着退化的角色。 也许友谊的开始只是小学一年级的时候他对你说了一声“我也喜欢看小丸子。”你们就手拉手肩并肩当了很久的密友。 也许是因为初中那次你俩都没交作业一起在楼道罚站&#xff0…

IBM® Bluemix 上运行ASP.NET Core

IBM Bluemix 上的“ASP.NET 核心”运行时采用“ASP.NET 核心”buildpack 技术。“ASP.NET 核心”是用于构建 .NET Web 应用程序的模块化开放式源代码框架。“.Net 核心”是跨平台的小型运行时,可由“ASP.NET 核心”应用程序实现。将它们相结合可实现基于云的先进 We…

拦截器 和过滤器

https://blog.csdn.net/zxd1435513775/article/details/80556034 拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别 2018年06月03日 13:31:00 止步前行 阅读数:2871 标签: FilterInterceptorControll…

解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别

转载自 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别 标准Http协议支持六种请求方法,即: 1、GET 2、POST 3、PUT 4、Delete 5、HEAD 6、Options 但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web…

攻城掠地端mysql_【图片】攻城掠地单机版本服务端+攻城掠地GM工具【单兆权吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼player_wepon 兵器 宝石修改.1,为1级宝石  1001,1级晶石修改最好手动修改,手自进阶  最多改六个一多出错player_tickets  点卷改修activity    活动表store_house  背包表p…

同步和异步有何异同,什么场景使用

同步和异步有何异同,什么场景使用,举例说明! 2016年11月30日 18:47:26 qq_36179561 阅读数:1752更多 个人分类: 基础知识 同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以…

面试经历---YY欢聚时代

转载自 面试经历---YY欢聚时代(2015年11月21日上午初试、25日下午复试)YY欢聚时代一年多前去面试过一次,当时鄙视了,在现在的公司呆了1年半了,感觉做得很不爽,而且薪资又不满意,所以想找个新工…

走进异步编程的世界 - 开始接触 async/await

序 这是学习异步编程的入门篇。 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Format() 方法。 目录 Whats 异步?async/await 结构What’s 异步方法? 一、…

所有的软弱,都是昂贵的

作者:周冲 来源:周冲的影像声色(fuck_your_dick) 01 契诃夫有一个小说,名叫《柔弱的人》,讲一个主人,巧立名目,剥夺家庭教师的工资。 首先,他压缩掉她的周末&#xff0c…

python3中urlopen_解决python3 urllib中urlopen报错的问题

前言最近更新了Python版本,准备写个爬虫,意外的发现urllib库中属性不存在urlopen,于是各种google,然后总结一下给出解决方案问题的出现AttributeError: module object has no attribute urlopen问题的解决途径我们先来看下官方文档…

100+经典Java面试题及答案解析

转载自 100经典Java面试题及答案解析面向对象编程(OOP)Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性。增加代…

.NET HttpClient的缺陷和文档错误让开发人员倍感沮丧

设计错误、缺陷及文档错误等导致正确使用.NET HttpClient变得出奇地困难。所以,即使是生产环境中看似运行正常的应用程序,在负荷不满的情况下,也遭受着性能问题和运行时故障。 来自ASP.NET Monsters的Simon Timms就通过一篇题为“你正在错误地…

python监听剪贴板_Python监听剪切板实现方法代码实例

第一种import win32clipboardimport time#速度快 容易出错class niubi():def lihai(self):while True:#jianting().main()t jianting().main()print(t)class jianting():def clipboard_get(self):"""获取剪贴板数据"""win32clipboard.OpenClipb…

新闻发布项目——业务逻辑层(UserService)

package bdqn.newsManageServlet.Service;import bdqn.newsManageServlet.entity.User;/*** 用户信息* author Administrator**/ public interface UserService {public User getLoginUser(String uName,String pwd, String msg);}

二叉树总结挺好的很好记忆

https://blog.csdn.net/fightforyourdream/article/details/16843303 面试大总结之二:Java搞定面试中的二叉树题目 2013年11月20日 14:04:27 chiiis 阅读数:25438更多 个人分类: AlgorithmInterview 这是本系列的第二篇,与前一…

免费开源分布式系统日志收集框架 Exceptionless

前言 从去年就答应过Eric(Exceptionless的作者之一),在中国会帮助给 Exceptionless 做推广,但是由于各种原因一直没有做这件事情,在此对Eric表示歉意。:) Exceptionless 简介 Exceptionless 是一个开源的实时的日志收集…

如何安装mysql5.5.6_centos6安装mysql5.5.53

MysqL官网下载MysqL的red hat linux安装包下载地址为:http://dev.MysqL.com/downloads/MysqL/5.5.html#downloads下载后的文件为:MysqL-5.5.53-1.el7.x86_64.rpm-bundle.tar解压 tar 包 :tar -xvf MysqL-5.5.53-1.el7.x86_64.rpm-bundle.tar移…

java职业规划

百度搜索java职业规划好多啊啊啊