记西安葡萄城面试(开发岗)

    也不知道为什么,每次去面试都会下雨,淅淅沥沥的那种!

    可能学校位置偏远,进个城都得一个多小时,消息闭塞,以前没怎么听过葡萄城,以为是我户太八号争气,扩大经营都搞到一个城的规模了,嘻嘻。。。秋招的时候才听同学说过葡萄城这个公司工资给的不错,加班很少,而且办公环境美的一批。我去网上查的时候人家都面完一轮了,我就抱着试试的心态网上投了下简历,没想到收到了面试的电话邀约,第二天就去了。

    公司很像一个小别墅,环境确实不错,干净,整洁。来面试的人挺多的,我们被安排在一个一楼有落地窗的会议室,落地窗外面就是一个干净透明的小池子,雨落在池子里,池子里的锦鲤和几条金鱼悠闲的游来游去,感觉挺舒服的。但是因为参加面试的人太多,等了有一个多小时,在这一个小时里才知道要进行四面,三面技术面,一面HR面,每一面都要撕代码,撕出来继续面,撕不出来走人,有人等,有人走,觉得挺刺激的。

   等了好久,终于被叫到,然后被带去三楼一个落地窗前的桌子上进行一面了,去三楼的路上工作人员问紧张不,我说有点,她一直在表达让我等这么久的歉意,安慰我没事,放轻松。因为在三楼,坐下来才发现外面撑伞的行人和车水马龙都能看得清清楚楚,环境确实舒服。面试官挺和气,先让来个自我介绍。问我项目上的一些东西,谈了大概十几分钟。他说你是搞算法的,怎么想来开发?我说我觉得深度学习这个东西有时候很玄,很难落地,而且西安高深度学习的都是小公司,有规模的就是华为了,华为太累,我想进一家人性化的公司,听说葡萄城特别好,钱多活少还离家近,面试官被我扑哧一声逗笑了说,这个问题先放下吧,咱们来写代码吧!请听题:

        题目1.现在给你一个无序的数组,你对它进行排序,要求前半部分是奇数,后半部分是偶数,而且奇数是降序,偶数是升序。

     我听了题目,感觉不难,但是没有一个很漂亮的办法,我就说先用一个最笨的办法吧,把奇数先拿出来放在一个数组里,对他进行降序排序,再把偶数拿出来放进另一个数组,对它进行升序排序。最后把俩个数组的元素再依次放进一个数组里面。接下来用Java撸出来了,面试官看了说,你这是可以,但是有没有什么更好的办法。我想了想说可以设置俩个指针,left++在左边找奇数,right--在右边找偶数,找着了然后就换。换完后,找到奇偶的分界点再进行排序。面试官看了说,确实比刚才那个强了点,但是你找到奇数和偶数为什么不分别开辟个空间用插入排序呢,我真想拍一下大腿,对哦,插入排序不就是把一个元素插入到有序的数组里面吗?这个题做完然后聊了下公司现在主要做的业务,差不多就结束了,然后等通知,就过了准备第二轮。

    第一轮面完过了的人,会让你填写一个表,包括一些基本信息,教育经历,个人爱好,期望薪资等等。填完后等了一会又被带到二楼进行二面,二面是俩个面试官,一个年轻一点,一个稍微年龄大点。上来还是先简单的自我介绍,介绍完开始就直接开问一些基本的东西,比如说说你知道的数据结构,然后每种数据结构都有什么特点?顺序存储和链式存储有什么区别?Java的ArrayList扩容机制是什么样的?Hashmap底层的实现原理是什么?Java里面new一个对象,内存是怎么分配的?说说Java的JVM机制等等。其他的都一一回答出来了,最后一个Java的JVM没有深入了解过,所以没敢胡说,就说这方面了解的比较少,面试官也没说什么。然后又开始撸代码,请听题:

     题目2:给你一个数组,请你找出这个数组中最大连续元素的和的最大值。

     刚开始没理解题,以为还要把这个连续元素的数组也找出来,在那一直用DFS做,写了半天。面试官说,你别想的太复杂,只让你找到这个最大值。我想了想,那这难度就小了,那我直接遍历数组,设置俩个变量,一个用来加和,一个用来判断,如果后面来的数,大于当前我这个最大值,最大值就是新的数,如果小于就不变. 思路清晰了,然后就写出来了。

   写完后,面试官说,来再给你出个题,一个桌子上有N个人,每个人手里都有一个数字,然后从第一个人开始,亮出手里的数字,顺时针走这个数字的步数,然后走到哪个人,这个人就out,然后继续顺时针走刚才out那个人里面的步数,就像丢手绢一样,直到out到只剩下最后一个人,返回这个人,游戏结束。你用程序实现以下吧!

    听完有一点点懵逼,然后分析一下,觉得还是可以写的。把每个人的数字按顺序存在数组中,数组下标代表这个人的id,数组元素代表这个人手里的数字。再声明一个同样长度的boolean数组,全部初始成true。true代表这个人还没有out,false代表这个人已经out。然后设置俩个while循环,外面循环的条件是true的个数不等于1.里面的while循环主要是为了看,走到的这个人是不是已经out,这个人如果已经out就在继续走。 直到boolean数组ture的个数等于1,循环结束,找出那个ture的下标。然后用Java撸了一遍,面试官看完后指出了一点小问题,然后点点头说可以。但是你有没有更好的数据结构来实现,不要用数组,我说map也可以,但是跟数组意思差不多。面试官提醒一下说,你可以试着想想循环链表。我想了一下,然后按照题目的意思,把循环链表画出来,才发现确实循环链表更简单,while结束的条件就是循环链表的长度等于1,而且out的时候只要修改一下指针,删除节点就可以了。这个题写完,然后年龄大点的面试官问我还有什么问题,我问了下在公司工作5年以上员工的比例,他们说接近一半,然后差不多就结束了。

扫描二维码关注公众号,回复: 3859665 查看本文章

     在外面等了一会,通知说二面过了,但是今天已经快7点了,时间不早了,下周一再过来继续面,还有一轮技术面和HR面。我从三点来,面试加上等待就弄到快7点了,是在饿的不行了,打个车就回家吃饭了。下周面完有空再写吧!!!!

      

           

     

    

     

猜你喜欢

转载自blog.csdn.net/m0_37382341/article/details/83047836