`
一个陌生人
  • 浏览: 4197 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

500强企业专家级面试果然是噩梦级,吐血分享成功经验

阅读更多
一、基础问题:


0,讲讲spring

除了标准答案,IOC和AOP外,我讲了下代理模式。

然后面试官问题来了,讲讲你自己实现过的AOP代理模式。

这里我老实说没实现过,但应该可以参考多语言国际化的写法来做。

这就是地狱难度,上来先一个下马威,打服了再说。

spring深入理解起来博大精深,我想专家级程序猿如果了解spring,最后可能会被问到源代码的问题上。





1,抽象类和接口的区别:

回答完概念后,我举了适配器和装饰器模式例子。适配器是把一个对象的接口转换供另一个接口调用,比如io读写的字符流通过适配器调用字节流对象来完成。

装饰器模式是接口不变,把一个抽象父类的功能增强,比如文件io流就是实现了io流抽象对象,调用文件读写的io优化,增强了io功能。

最后我举了自己项目中做C语言做USB转串口的适配器模式。



2,讲讲单例模式:

回答完概念后,我讲了饿汉和懒汉单例的实现,spring的默认单例运行。然后罗列一堆开源项目使用的单例+线程池。

最后讲了自己项目中使用的单例。还讲了适用范围的,此处单例仅适用于程序内部,系统中程序只允许启动一个实例的单例实现。



3,讲讲string在内存的存储:

答完string和一般值类型如int、double的不同,存储在JVM的堆上,在栈上保存对象的引用。然后快速介绍jvm的GC算法。

最后讲了在代码中如何避免内存泄露。



4,cookie和session的优缺点:

回答完标准答案后,我讲了一些自己项目中session共享的实现,快速画简要建构图,然后简单说了一下nginx反向代理配置tomcat集群,tomcat里配置session由某个开源插件来实现,session的产生由redis服务器来完成。

面试官刚好也研究过,问我单点登录怎么解决,我session共享关键问题解决后,只需要加台用户中心服务器即可。

实际上单点登录我并没有完全实现,但这堆应付面试是无伤大雅的。真要实现单点登录环境,相信给一周时间也能做出demo。

这时发现一个细节,面试官手里的纸上写了一些我说过的技术点,在设计模式和内存管理后面又加了一个单点登录。



二、进阶问题



5,讲讲多线程

我直接把《多线程编程核心》书里的知识点快速介绍一遍,然后说了一下多线程实现生产者-消费者的伪代码。



讲了MQ消息队列的点对点模式类似实现,引申出了MQ消息队列的发布订阅模式。这回有点表现过头了,说到一些公平锁和线程调度方面时,面试官有点发愣,我赶紧停下来等面试官问。



果然面试官可能有些不快地说,多线程你只是理论看得多,实际项目没有使用过吧?我赶紧说不好意思,我说到自己擅长领域就忘记了环境(当然我确实也没有游戏编程那种多线程经验)。



面试官态度变好了,我便拿那个专利项目举例,说多线程除了异步等待耗时操作外,也可以用在纯计算耗CPU的场景,有几个CPU核心开几个线程把CPU全占满,以加快计算。

多线程被顺利加入清单。



6,前面提到了MQ消息队列,那么你对分布式有什么经验?

我坦言分布式只是最近我在学习的,画了个简图,简单讲了下dubbo、zookeper、activiedMQ、redis、FastDFS组成的分布式架构。

分布式有所了解这个技能又被加入清单。



7,讲讲你项目架构中的性能优化

状态越来越好,性能优化我准备多时早就饥渴难耐了,这里的纲要按照 架构设计思维导图 来讲。

分前台,后台,数据库优化三大方面来展开。

最后结合了我写代码的规范标准,自己总结的不比大公司人多力量大,作为单打独斗的野生程序员能做到这个地步也差不多了.



8,我们数据安全性很高,讲讲你的安全设计

我讲了下自己登陆体系使用过的技术,密码MD5,RSA加密用户输入数据,AES解密数据库连接等。

中规中矩吧。



9,讲讲springMVC原理,及如何注入的

非基础方面可能问不出什么了,于是搞面试官冷不丁抛出一个基础问题。我的思路一时无法从系统架构的状态上切换过来,想了10秒也想不起。

在面试官引导下,我说了通过包扫描来注入。面试官说很正常,他也经常忘记一些基本的东西。





10,final,finally,finalize的区别?

基础关键字,如果这个答错应该是会被扣分的(其中finalize方法是在垃圾收集器删除对象之前调用的)。

当然基础知识我怎么可能忘记,顺便发说了一下service中一般不使用try catch finally,自己处理的话,配置的事务处理就不起作用了。





三、杀手问题



11,看你的项目经历,是开发企业应用居多,没有互联网和电商项目经验。现在我问你如果是电商项目,你如果拆分成分布式项目。



这个问题直击弱点,这里其实已经不是考察能力是否匹配职位需求了,应该是为优中选优准备的附加题。

我答不上来,就说了下我对自己项目分布式拆分的思考,因为我从搭建自己项目那天开始就想着给企业所有几万用户使用,腹稿早就有了。



然后推理电商项目中用户、支付、交易记录这些也注册为基础服务。利用分布式缓存提高性能,分布式文件系统来存储海量数据。



500强企业的专家级面试果然是变态,当时我不知道分布式数据库这个概念,导致后面被针对海量数据和分布式数据库攻击。





12,前面说到海量数据,你对海量数据有哪些了解?

杀手问题果然是连环陷阱,就看你能闯过多少关获得加分了。还好我每次回答都注意答案出现的相关概念都至少是自己了解过的,以防御针对弱点攻击。



我说海量数据加算法=大数据,讲了几个海量数据的典型算法, 提到海量数据算法又顺带讲了分布式最终一致性那个二次提交确认的算法。



说到面试官不了解的领域再次被打断了,面试官又问我下一个杀手问题。海量数据算法了解的标签被加上。



13,我们公司的的数据中心,经常会遇到短时间写入上百万数据场景,你会怎么处理?

答案应该是分布式数据库,前面没提到分布式数据库,这里再次被针对弱点提问,巧妙的隐藏概念,防止浑水摸鱼。



开始我说用MQ消息队列先消掉高并发峰值,向订票系统那样延后操作。面试官说要求实时处理,你这想法只是推迟。



我想了一下又说再加分布式缓存,面试说还是实时性不够。



我突然想到做单片机时,为了提高数据传输量,增加多几个IO口一起来传输。讲了到利用NIO的原理多增加端口来提高数据吞吐量。



面试官说好了然后问了最后一个杀手问题。



14,你自己写过开源框架吗?

果然是终极问题,一般大牛要是写了开源,早就会在简历显眼位置上标注并宣传,并会在面试时主动提出。不会留到最后等面试官问题



我想如果回答写过,一定会悲贴上不诚信的标签,然后来个突然死亡。



当然我说没写过,面试官继续问当你遇到的开源框架并不适合,一定要自己写怎么办?



我说我还没能力写框架,但据说观察开源框架一定是符合这些标准的,比如代码优雅,遇到创建和销毁耗资源的场景用单例,然后又列举一遍使用了单例加线程池的框架。



我继续说spring是标配,大胆使用spring优雅的开发。最后讲了下自己学习phogap时使用angularjs实现了公共的factroy和controller,然后开发功能模式,只需要像ajax一样传入请求url和参数就自动实现了列表页面和查看页面。



再迁移一些JS类库进来,勉强算是实现开发框架吧。

面试赞许了一下,不过他并不了angularJs,可能得不到这个附加分吧。



面试结束了,我看了下时间,两个竞争对手的时间加起来大概一小时,我大老远做高铁过来所以排在最后,大概用了50来分钟。



面试完意犹未尽,我一直精神高度集中快速回答,回家后不停的回报过程,并把回答得不好的分布式数据库理解了一遍。



并计划读一个典型开源框架源码,以后可以说在读开源框架的源码,为早日写出自己的框架做前期准备了。



但我很清楚自己并不是威震天能做大佬开创道路,我只是一台为生存而战的量产T800型终结者。



然而,第二天接到HR的通知:

很抱歉,您的面试效果很好,但由于学历问题没有给您发复试通知。已经努力和总监为您争取过,但总监不同意。



又是一个狗血的命运安排,我知道学历是硬伤,早就重新读电大了。早早就告诉学校我奔学位而来的,但交完钱老师却忘记报名学位英语考试。



因为这么多年来,读计算机专业的攻读学位只有我一个,所以老师就习惯性的无视了。



计算机专业拿北京交通大学学位有点难,要求核心课程全部80分以上,如linux系统,数据结构,离散数学,图论。专业要求一点不比一本差。离散数学我认真学了一遍才考80分,刚刚达到标准。



难道我存在的意义就是最后要做邪恶的章鱼博士去报复世界,等着正义的蜘蛛侠将我打倒。最后在续集再演出我的杯具人生来个洗白白赚点眼泪,为高维存在的观众们演一出商业电影?



当然我不能按照剧本走,努力学习是为了更好研究这个世界。显然,我向天再借500年都难以成功。但如果有轮回的话,只要保持自己的技术初心不变,在不断轮回中积累,总有脱离苦海的那一天。



最后,我的梦想是未来总会有那么一天,一个人的拥有的权力和力量,取决于他对宇宙的认知。

那是一个技术改变世界、代码改变世界的时代。

那是一个科学家和技术人员为统治阶级的时代,像《奥术王座》里那样,法师的强大取决于对科学原理的理解。



如果您有耐心看到这里,那么麻烦动下鼠标为我点个支持吧。无论你收获了地狱难度级的面试经验,还是想给我一些鼓励分享一点运气给我,或者你也有类似的技术梦想。

请给我一个支持,为了代码改变世界。
分享到:
评论

相关推荐

    伦斯勒理工学院材料科学与工程面试经验汇总.pdf

    7. 面试技巧与心态:文档中描述面试为“噩梦一般”,可能说明面试者的面试技巧有待提高,包括如何在长时间压力之下保持清晰的思路和表达能力。同时,保持良好的心态对于应对面试中的各种情况也是至关重要的。 8. ...

    福布斯:社交媒体或成企业IT安全部门噩梦.docx

    社交媒体已经成为企业IT安全的重大挑战,尤其对于安全部门而言,这一现象犹如一场噩梦。《福布斯》杂志的文章揭示了社交媒体的普及如何为黑客提供了新的攻击途径,以及企业需要采取何种措施来应对这一问题。 首先,...

    《噩梦射手》的Unity项目文件

    《噩梦射手》是一款基于Unity引擎开发的游戏项目,其源代码和资源文件的提供对于学习和研究Unity游戏开发具有很高的价值。本项目适用于Unity 2019或更高版本,这意味着它利用了Unity引擎的新特性、优化和更新,旨在...

    Flex企业应用开发实战源代码

    本书由业界4位拥有近10年企业级应用开发经验的资深专家撰写,权威性毋庸置疑。 全书共分为4大部分,涵盖企业级应用开发的整个生命周期。首先介绍了Flex/Flash的工作机理和利用Flex开发企业级应用必须掌握的基础知识...

    噩梦射手 Unity 实训报告

    【噩梦射手项目】"噩梦射手"可能是实训项目的名字,涉及地图生成、角色设定、行走和射击机制、怪物状态机、伤害计算、分数和血量系统等内容,通过这个项目,学生可以全方位地实践Unity游戏开发流程。 【实训总结】...

    vue2 以及小程序面试题文档,帮助你快速了解,vue2框架以及小程序的核心

    【Vue2.0面试题】 1. Vue生命周期:Vue实例从创建到销毁的过程称为生命周期,主要包括8个生命周期钩子函数,如beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed。在...

    unity3d打地鼠和噩梦射手游戏完整项目源代码

    在这个“打地鼠和噩梦射手”游戏中,我们能看到Unity3D在游戏设计和开发中的实际应用。这个完整项目源代码提供了两个游戏的实现,一个是经典的打地鼠游戏,另一个是噩梦射手游戏,这为学习Unity3D编程提供了宝贵的...

    金盾高级视频加密系统2016S

    1、增加了自定义播放器图标功能,个性化图标和个性化界面可以显著提升企业形象; 2、增加了默认水印功能,无需设置播放密码就可以给视频添加水印; 3、采用更高强度加密内核,让所有形式的翻版方式都失效; 4、采用...

    EVE新纪元四级任务攻略.doc

    4. 防御标准:对于IV级任务,防御效率和全抗防御效率分别需要达到500和400,同时雷达强度至少30,以防NPC的电子战干扰。 5. 推荐配置:一种万能的脑插方案包括感知+5、T2回盾脑插、学习脑插、T2回盾脑插和回电脑插...

    基于高级威胁情报狩猎APT组织.pdf

    2. **威胁狩猎的产出**:360威胁研究院在过去成功捕获了多次0day在野攻击,例如“双杀”、“毒针”行动和“噩梦公式二代”等,这些都是全球首例或重要的APT攻击事件。这些成果展示了其在威胁检测和响应上的实力,...

    职场噩梦_csdn

    6. 职场受害者互助小组:文章最后提到了职场受害者通过组织互助小组来自我疗愈,这表明当面对职场困境时,除了法律途径外,受害者也可以通过分享经验、互相支持的方式寻求心理安慰和帮助。 7. 现代办公室病:文章中...

    金盾高级视频加密系统V2017,一劳永逸的视频加密解决方案!

    4、可以自定义个性化认证界面图,专业的认证界面可以显著提升企业形象; 5、新增自毁功能,加密后的视频检测到破解可以自毁,此功能可以抵御市面上所有破解方式; 6、新增天狼加密内核,此加密措施从未被破解过,...

    金盾高级视频加密软件V2017

    4、可以自定义个性化认证界面图,专业的认证界面可以显著提升企业形象; 5、新增自毁功能,加密后的视频检测到破解可以自毁,此功能可以抵御市面上所有破解方式; 6、新增天狼加密内核,此加密措施从未被破解过,...

    年终总结PPT不在是噩梦

    年终总结PPT不在是噩梦

    噩梦射手官方项目

    U3D官方经典游戏案例噩梦射手,Unity初学者的必选项目。

    \年终总结PPT不在是噩梦.ppt

    \年终总结PPT不在是噩梦.ppt \年终总结PPT不在是噩梦.ppt

    企业应用整合--异构应用的业务流程自动化(PPT 17页).pptx

    企业应用整合是现代企业信息化发展中的重要议题,尤其是在面对异构应用环境时,如何实现业务流程的自动化成为了关键。遗留应用的整合旨在保护企业的既有投资,同时通过与新开发应用的融合,创造新的商业价值。这包括...

    FLEX企业应用开发实战.part1

     1.1 B/S企业应用开发者的噩梦  1.2 噩梦结束,新时代来临  1.3 Flex概述  1.4 Flash Player的工作模型  1.4.1 Flash Player的帧执行模型  1.4.2 Flash Player渲染模型  1.4.3 Flash中的事件机制  ...

    Unity噩梦射手资源包.rar

    《Unity噩梦射手资源包》是一个为游戏开发者提供的完整项目资源,特别适合初学者和有经验的开发者用于学习和理解Unity引擎的使用。这个资源包包含了一款名为"噩梦射手"的游戏的所有必要元素,包括场景、角色、动画、...

    噩梦:高级浏览器自动化库

    恶梦 Nightmare是的高级浏览器自动化库。 我们的目标是公开一些模仿用户操作的简单方法(例如goto , type和click ),并提供一个针对每个脚本块都是同步的API,而不是深度嵌套的回调。 它最初设计用于在没有API的...

Global site tag (gtag.js) - Google Analytics