CVTE/ZTE/油坊桥乞讨相关
第一点,这并不是一篇传统的面经,而只是我最近几天的一些见闻,思考和技术上的一些小结以及展望。如果要看面经直接下拉至下面的技术展望部分。
一个很好的点子或者一个方案,在没有经过市场的试炼之前,一文不值。而且,新颖的点子并不稀缺,缺少的是培养这个点子的土壤,支持这个点子的韧劲和与其他类似点子博弈的腕力,当然还有,资金。理想很丰满,现实很骨干很真实;心有猛虎细嗅蔷薇在特定环境下,是一种讽刺;当你有一个想法的时候,不要在脑海里检验它有效与否,而应该着手去做,让事实和结果来对你的想法做出评判。比如,昨天的乞讨–一个城市生存活动,没有启动资金没有认识的人没有你需要的资源,然后在有限的时间要赚到午饭钱,回去的车费以及最终团队比拼需要的储备资金。在没有真正的融入到这个活动中,我想过各种各样的赚钱方法,但是当你切身去体会的时候,那些方法都是扯淡。
几场面试的过程下来,那套说辞无异于嚼甘蔗了,缺乏感染力。当务之急,扩充简历内容,具体包括:扩充实习项目的内容,重做项目介绍,平衡前后端,横向增加,重贴照片。
在ZTE面试的过程中,前一位奇女子的对答入流令我佩服。
面试问“你的职业规划是什么”
她“首先第一年刚大学毕业,要完成从学生到职业职场人的身份转化,所以入职第一年我希望自己能够尽早熟悉公司的业务,流程,尽快掌握公司需要的技术,完成身份转变;然后前三年,我希望自己能够在技术不说成为整个技术团队的核心,但是至少能够成为这个团队中不可或缺的一员,也就说不是成为一个可有可无的人物;然后之后七八年我希望自己能够方方面面都有所接触,包括管理,销售等,然后选择一个自己真正擅长的领域去开疆拓土”
之后还问到了“如何看待按劳分配”“自己在这个项目中遇到的困难”“用英语简单介绍一下xx”等一些问题。她的回答内容充满充实,有层次,有条理,充满了自信但是又不会让人觉得刻意炫技和咄咄逼人。在她开始面试之前,我和她有过一个短暂的交谈,在整个不足5分钟的对话中,她只是一个戴着牙套身高很萌爱笑的简单女生。与她之后面试时候的能进能退,收放自如,目标清晰,对答如流的形象对比明显。回去的路上,我回想起她,发现她其实和我身边的一些朋友同学ZY WXY ZZY等一样,有相同的特质。他们都内敛,不卑不亢,不会刻意的炫技,会迎合你,让你觉得和他聊天是一件愉快的事;当要争取或者竞争时,他们又能够释放出强大的力量;他们从不把自己主动的放在一个领导者的位置,但是却一直都干着领导者的事。这种内敛不卑不亢而又充满力量和学识的人格特质,或许是中国当代中最受推崇的一种,就如同外国都喜欢那些自信热爱自由擅长社交的人一样。
在谈那个乞讨活动–“城市生存”。最后总结的时候说到一句话,“你们今天遇到的事,你们做出的选择,就是十年之后你在面临类似情况时,在职场中或者一个创业团队中,会做出的选择”;听到这句话,我恍惚回忆起加拿大的朋友YZF,他在出国前积极乐观,爱笑(时常被女孩子吐槽笑点低),喜欢一些男孩子热爱的酷酷的东西(街舞吉他比box),充满爱心,偶尔会有一点小情绪,稍微有点缺乏主见。出国三年之后我在遇到他,他身上那些特征如同早已深深根植于他命运中一样,他并没有产生我所期望的,一个完完全全陌生的环境所带来的,翻天覆地的变化;甚至一点明显的变化。这不是我希望我看到结果,这是我今晚深夜在这写博客的原因。
一个小插曲,ZTE综合面试的面试官给我提过一个问题:现在给你300-400万,让你去创业,你会选择那些领域?这个问题我之前曾幻想过多次,但是当这个问题被真实的抛在自己面前时,我却一时语塞。回想当初无数壮志凌云一览众山小的景象,这一刻却变得模糊起来。或许,许多年之后的某一天,我会抱起面前的电脑,仍在地上摔个粉碎,说“老子受够,时间不多了,我得去做点疯狂的事”。
展望:技术相关JD/ZTE/CVTE
最近刚经历了JD ZTE CVTE三家企业的面试。横向来看,CVTE和JD的技术面试难度都不大,ZTE一面也一般般能很好应付,但是ZTE二面真是我遇到过最刁难人的面试了。一一来说吧:
CVTE
面试官:简单做一些自我介绍吧。
me:巴拉巴拉
面试官:我看你简历参加了不少社会实践活动啊,从你简历上挑一个你熟悉的讲一下吧
me:巴拉
面试官:好了我不想了解太多业务上的东西。来我们写个程序吧(说着面带微笑的给我递了一张白纸)
程序是字符串中提取高频词汇的,不算难,我用了两种办法解决了,一是两层循环暴力全遍历,二是字符先排序,然后提取相同字符的长度。
面试官(看了会程序):你这个程序返回的值在哪?
me:这,就是这个res,上面设的int值。
面试官:只返回一个int吗?万一有多个值呢
me:可以在我之前问过你是不是只返回top数量的字符的
面试官:top数量的字符也…
me:哦哦,知道了。这个我这个程序也可以改进,然后巴拉巴拉
面试官:好的。那么现在我接着来问吧,(微笑着又递给我一张纸),画一下Exception的类继承图吧
me:(这个是有点印象,但是真记不得了啊)
然后写了几个自己熟悉的异常,包括indexOutOfBoundsException,RuntimeException;
面试官:知道OOM?
me:???
面试官:OutOfMemoryEorrro。
me:知道,内存溢出了。
面试官:在什么情况下会出现OOM,或者OOM背后的机理是什么?
me:类的新建对象都是存储在堆中,如果堆中对象过多就会触发OutOfMeroryEorr,比如在一个死循环中一直new新建对象。
OOM的官方说明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector.
出现OOM的两个原因:
1.内存泄漏。申请使用的内存没有被释放
2.内存溢出。申请试用的内存过大,超过提供值
OOM的类型(一般而言java的四块内存区域:堆,虚拟机栈,方法区(除了程序计数器之外),和Native栈都可能出现OOM)
1.java.lang.OutOfMemoryError: Java heap space ——>java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。对于内存泄露,需要通过内存监控软件查找程序中的泄露代码,而堆大小可以通过虚拟机参数-Xms,-Xmx等修改。
2.java.lang.OutOfMemoryError: PermGen space ——>java永久代溢出,即方法区溢出了,一般出现于大量Class或者jsp页面,或者采用cglib等反射机制的情况,因为上述情况会产生大量的Class信息存储于方法区。此种情况可以通过更改方法区的大小来解决,使用类似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。另外,过多的常量尤其是字符串也会导致方法区溢出。
3. java.lang.StackOverflowError ——> 不会抛OOM error,但也是比较常见的Java内存溢出。JAVA虚拟机栈溢出,一般是由于程序中存在死循环或者深度递归调用造成的,栈大小设置太小也会出现此种溢出。可以通过虚拟机参数-Xss来设置栈的大小
面试官:知道其中那个类共同继承于Exceprion和Erro的吗
me:runtimeException(猜的)
这个我是有印象的,在第二版的《疯狂java讲义》中提到过,但是我现在到网上查到第一版中查都没查到,回宿舍在看看《java核心技术》,看有没有
……
面试官:讲一下左连接和右连接吧
me:左连接保留左表匹配右表,右连接保留右表匹配左表(这个问题在jd面的过程中又问了一遍)
1.SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
2.SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
之后还问了些不痛不痒的就结束了,最后挂了。随意,反正它是焊电视板的(不是纯粹的互联网公司),反正不想去广州
ZTE
面试ZTE那早拉肚子,而且没睡好在地铁上差点睡过站。这是前提。
漫长的等待之后开始了技术面
面试官(一个慈祥的大叔和一个年轻小伙):这个简历纸张不错嘛
me:还行,彩色打印的
面试官:做一下自我介绍吧
me:balabala
……
面试官:成绩不错啊,前30。英语不错啊,英语专业的吗?做过的项目挺多的嘛
me:恩,还行。没有啦。谢谢
一面没有为难我,轻松过了
二面开始之前,坐在门口听着里面的学姐高谈阔论,真的长见识。
我进去坐定
面试官(一个女的,干练且强势型,一个大叔,技术型):不好意思让你久等了,简单做一下自我介绍吧
me:巴拉巴拉(此时已经有点疲惫了)
之后让我介绍了一下项目
面试官:你这个项目的数据是采集的吗?
me:不是,是手动输入的,因为客户给我们的需求没有提到自动采集,所以我们也不会自己改动
面试官:数据库用过吧
me:用过,了解Mysql
面试官:会做mysql的分布式吗?
卡壳中……
面试官:不会,没关系,会使用mysql调优吗?就是改动mysql的一些语句,让它更够更高效的进行查询。
me:由于我们这些项目都是一些数据量不是很大的项目,所以并没有进行mysql调优的必要,所以也没有做
mysql21条调优实践地址–>
这种知识点碎片还是让人看得模棱两可,去完成《mysql》的内容,以获得一个系统性的知识
面试官:假如现在给你300/400万让你去创业,你会选择在什么方向或者什么领域发展
me:卡壳一会,我没有想过这个问题(尴尬笑),之后补充说会选择一些热门领域,因为一头猪就算处在风口上也会飞起来
面试官:你在学习或者项目中有过什么帮助别人的经历吗?
面试官:你有没有想过当你帮助了别人之后,他可能会获得一个比你更好的绩效
面试官:你在你成长的过程中或者在项目的过程有没有遇到什么巨大的挫折?
面试官:那么你从这个过程中学到了什么?
面试官:假如领导给你派发一些你之前并不熟悉的领域的任务,你会怎么办?
面试官:你熟悉算法吗?假如上级要把你调到一个研究算法的部门,而且这个部门中的人,都要比更精通这个领域,你会怎么选择?
面试官:来用英语介绍一下你在身上的一个缺点吧,然后顺便讲一下你是怎么一步一步克服它的。
我具体的答案就不罗列,答得很不好,前后矛盾,而且创业那就是个坑我还往里跳了,最后英语的介绍也跟楞半岛的。
总结来看,英语介绍前最好先组织好语言,不要张口就来,先想清楚要说什么。mysql了解不够深入,分布式实现mysql可以了解一下。做一个长期的规划。
JD
jd是远程电话面,问得相对基础,还算顺利
面试官:简单做一下自我介绍
我:巴拉巴拉
面试官:我看你做过不少项目,挑一个你最熟悉的谈一谈吧
我:balabala
面试官:你在这个项目中遇到的一个技术上的或者业务上的难点谈一谈
我:我们这个项目的数据本来是想要通过探测器自动获取的,并且客户也是这样想的。所以我们在早期实现的时候,是按照探测器的模式来实现的。但是这其中有一个很大的问题是,客户并没有真正的硬件,也就是说他们并不知道要采集的数据有哪些,所以导致我们的底层数据库都没有办法设计,最后我们只能给他们的探测器录入数据留一个接口,然后通过人工录入的方式来实现了功能。
面试官:你是学java的对吧?接触多久了?c c++了解吗?恩,你的第一志愿是成都啊,可我是北京的,如果你要去成都还得让成都那边的人来面试你。
我:我可以接受调剂,就是成都是第一志愿,其他的也可以接受。对我主要做java开发,c c++只是了解。
面试官:那么问点java相关的吧。java要怎么退出多重循环,switch语句可以适用的类型有哪些?左连接和右连接是什么意思?算法知道吧?归并排序和快速排序有什么区别?
我:java通过break to退出多重循环,前提是要在循环外设一个标记位置。switch语句应该都可以适用(这个真不知道)。左连接和右连接,一个是保留左表去匹配右表,一个保留右表去匹配左表。知道,快排和归并时间复杂度都是log(n),但是快速排序还适用于整个序列比较混乱的情况下。
之后他深究了一下switch,又问了几个简单的问题也就结束了,这轮应该没问题
1.退出多重循环:在循环为价格标示(例如:outer)然后break outer就行
2.
2.1. byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持) 都可以用于switch语句。
2.2. long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中) 都不能用于switch语句。
2.3. enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支 持。
2.4. 所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除 byte、char、short、int四种基本类型对应的包装类)都不能用于switch语句。
3.归并和快排本质都是分治的思想
归并是将范围缩小到一个不能再缩小的范围,然后依次比较合并比较合并,最后得到有序数组
快排是通过每次都将一个数字放在正确的位置,然后在这个数字前后再将一个数字放在正确的位置,依次下去,直到得到数字前后不能在分时就得到了有序数组
对比来看,快速排序最好情形的时间复杂度为O(NlogN),最坏的情形为O(N*N),平均时间复杂度O(NlogN)。
归并排序最好情形的时间复杂度为O(NlogN),最坏的情形为O(NlogN),平均时间复杂度O(NlogN)
但是归并要多用到logN的空间,并且实际使用上,快排也要比归并更快
以上
下次会更好