好猎头网-中高级人才猎头网站!服务热线:400-1801-668 好猎头   |   登录 注册

美团网2015校园招聘长沙地区技术类笔试经验

添加时间:2017-11-27 00:00:00
浏览次数: 0

职位类型:技术类

面试时间:2015校招

招聘公司:美团网

笔试题目好多是算法类型的,貌似都是用c写的。现在只模糊记得下面两道题了:

1.求把一个字符串转换成整数,转换出错,则返回0,大概意思是这样吧。
我想到的的解决办法是,把每一个字符提取出来,比如'9',字符'9'-'0'字符9减去字符0就是所对应的数字了(数字加'0'就得到对应的数字字符)。把得到的数字化成sum=sum*10 num;sum是累加的和,num是字符对应的数字,开始sum为0。

2.构造一个函数把一个整数从高位到低位,比如123,存储到单链表中,比如第一个结点存1,第二个结点存2,第3个结点存3,函数返回单链表的头指针;构造函数把前面的单链表乘个位数(0-9),把结果存到单链表中。

面试:给我面试的时一位帅哥,看起来还蛮和蔼的。我走过去,开始拿出草稿本和笔,准备面试。面试官哥哥开始让我做下自我介绍,我就说了下,其中他做了下笔记。然后就正式问我问题了。

1.你说说这笔试题目难不难?
这问题答的不太好,我说笔试都是算法和c语言的题目,而我已经很久么碰过c了,所以有点难度。后来问我学什么的,我说是学java的,又问了我是想搞后台开发还是android开发,这里回答觉得有很大的问题,我就不说了,我应该肯定说是搞android开发的。

2.java的反射机制。
反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力。java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接。反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活应用代码的主要工具。需要注意的是,如果使用不当,反射的成本会很高。

3.数据库的隔离机制,什么是乐观锁,悲观锁,有什么区别。
⑴数据库提供了4中隔离级别:
①READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更,脏读、不可重复读和幻读的问题都会出现。 

②READ COMMITED(读已提交数据):只允许事务读取已经被其他事务提交的变更,可以避免脏读,但不可重复读和幻读问题仍然会出现。

③REPEATABLE READ(可重复读):确保事务可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但幻读的问题依然存在。 

④SERIALIZABLE(串行化):确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,所有并发问题都可以避免,但性能十分低。 

⑵①Oracle 支持的2种事务隔离级别:READ COMMITED, SERIALIZABLE。Oracle默认的事务隔离级别为: READ COMMITED。  

②Mysql 支持4种事务隔离级别。 Mysql默认的事务隔离级别为: REPEATABLE READ。

4.什么是进程,什么是线程,进程和线程的区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是指进程内的一个执行单元,也是进程内的可调度实体。

与进程的区别:
⑴地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间。
⑵资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源。
⑶线程是处理器调度的基本单位,但进程不是。

5.问我用了什么浏览器,浏览器打开一个新的标签页面的时候是用的进程还是线程?
我回答错了,正确的应该是:看是什么浏览器,不同的浏览器,实现的方法有些不同,有的是用的多进程,有的是共用一个进程。比如谷歌浏览器,打开一个标签就是一个新的进程,但是也可以设置使用单进程,即所有的标签共用一个进程。有的浏览器使用的是单进程。

多进程提高了整个应用的稳定性:倘若有一个标签页崩溃、假死了,并不会影响到其他的标签页。

多进程可以提高应用整体性能:现在计算机已经进入多核时代,只有能利用多个核心的优势才能进一步提高程序性能。一般而言,单进程的程序要通过线程来利用多核,但是线程之间由于共享同一片内存地址,编写代码容易出现问题,不如传统的进程方式方便稳定。

6.字符串有什么匹配算法,kmp算法的时间复杂度,你能够写一个kmp算法嘛?
字符串匹配算法有,Brute-Force算法和KMP算法,kmp算法的时间复杂度是O(n m)
    
7.问我知道什么排序算法。
        
8.写一个堆排序。

9.一个单链表a->b->c->d->e........->y->z,奇数不变,偶数符号变,转换成a->b<-c->d<-............x<-y->z

这题的代码,就略了,我就说下思想吧,本来我以为按a->b<-c->d<-............x<-y->z输出就可以了,但是最后面试官说要返回一个这样的单链表,汗。。难道我理解错了,但是他说的时候只说了一个节点里面只有一个存数据,一个存下一个节点的指针,那箭头存哪了?好吧,要是理解对了,我也就可以写出来了。。。。

思想:遍历单链表,判断是否是偶节点,是偶节点的话,就把节点里面的箭头变化下,最后函数返回头指针。

10.单链表逆序比如a->b->c->d->e....->y->z,变成z->y->x..........->c->b->a
思想:用一个指针指向该单链表,单链表本身的指针指向NULL,遍历新的单链表,取出新的每一个节点,并把它插入到原来头指针向的第一个节点前面,最后返回头指针,这样就可以实现逆序了。

11.一个概率问题,一个色子6面,正常情况下每面出现的概率是1/6,现在要设计一个游戏,色子是不均匀的,其每面出现的概率都不在是1/6,而且每面出现的概率不一样,怎么设计这个游戏使输赢都是1/2。

12.一枚硬币2面,不均匀的,所以正面朝上和反面朝上的概率都不是1/2,现在设计一个游戏,使输赢都是1/2.

13.git的pull命令,怎么克隆,与克隆的区别。

14.git创建分支,切换分支,列出所有的分支。