美团点评一面凉经和答案:

1.计算机网络分为几层?

    OSI参考模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
    Tcp/ip模型:应用层,传输层,网际层,网络接口层。

2.说说你知道的网络协议:

    应用层协议:http协议,smtp邮箱协议,DNS协议,RIP协议。
    传输层协议:TCP,UDP协议。
    网际层协议:IP协议。
    网络接口层:DHCP协议。

3.http协议实现了什么:

    1、客户与服务器建立连接tcp
    2、客户向服务器提出请求;
    3、服务器接受请求,并根据请求返回相应的文件作为应答;
    4、客户与服务器关闭连接。

4.http的cookie和session是什么?

    Cookie通过在客户端记录信息确定用户身份,Session通过在服务器记录确定用户身份。
    Web程序是使用HTTP协议传输数据的,HTTP协议是无状态的协议,一旦数据交换完毕,客户端与服务端的链接就会关闭,再次交换数据需要建立新的链接。这就意味着服务器无法从链接上面跟踪会话。永久登陆,把登录信息如账号、密码等保存在Cookie中,并控制Cookie的有效期,下次访问时再验证Cookie中的登录信息即可。
    Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,Session保存在服务器上。客户端浏览器访问服务器的时候,服务端把客户端信息以某种形式记录在服务器上,这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

5.快速排序的时间复杂度是多少,空间复杂度是多少?

    时间复杂度是多少平均O(nlogn),最坏时间复杂度O(n2),空间复杂度最坏深度On,时间复杂度O(logn),主要是和他的递归深度有关。

6.mysql会不会?索引是什么?

    会点,索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。如果布简历索引,数据库会把每一个数据读入并且进行比较看它是不是符合要求。

    索引按照数据结构可以分为hash索引,fulltext索引,BTree索引,Rtree索引。

Hash索引相当于是一个哈希表去查找一个变量是什么,fulltext索引利用了倒排索引,统计每一个文字在哪一个位置,Btree就是B树,Rtree相当于是多维的B树查询。

7.mysql如何进行检索调优?

    1. 优化数据访问

    用LIMIT来限制查询的条数,避免使用select *

    查看返回条数,查询条数,比较次数过多可以使用索引

    2. 重构查询

    比如返回连接两个查询的表的话,可以先查询得到两个子表,再连接

8.简述TCP三次握手和四次挥手?

    三次握手:客户端发起连接,服务器接收后,发送连接就绪报文给客户端,客户端收到后明确链路无任何问题,发送报文给服务器,服务器收到后成功建立连接。

    四次挥手:客户端发起,我事情完了,请求释放,服务器收到,但是还未准备好,因为是客户端突然发起的,但是服务器任然会发送报文告诉客户端中止连接报文已经收到。然后服务器处理未处理完的事务,告诉应用层该链接请求中止。事务执行完毕后发送中止报文给客户端,然后客户端收到并返回终止报文(此时客户端要等待2MSL),服务器收到,连接终止。如果没收到,服务器还会再发送一次终止报文,然后客户端收到并返回终止报文(此时客户端要等待2MSL)。

9.什么是容器?

    容器就是储存对象的对象,如python的列表,元组,优先队列,栈,队列等等。

10.git是不是一个分布式控制系统?明明要和服务器上的东西比较,为什么不是集中式的?

    Git是一个分布式版本控制系统,虽然看起来是集中式的,他有开发这个软件的每一个步骤,中心的master只是一个伪集中式的版本,即使它挂掉了,我本地的软件依然是能够使用的。

11.找两个数组的中位数。

class Solution:
    def findMedianinTwoSortedAray(self , arr1 , arr2 ):
        # write code here
        if arr1 == None or arr2 == None or len(arr1) != len(arr2):
            raise Exception("Your arr is invalid!")
        start1 = 0
        end1 = len(arr1) - 1
        start2 = 0
        end2 = len(arr2) - 1
        while start1 < end1:
            mid1 = (start1 + end1) // 2
            mid2 = (start2 + end2) // 2
            offset = 0 if(end1-start1)%2 == 0 else 1
            if arr1[mid1] == arr2[mid2]:
                return arr1[mid1]
            elif arr1[mid1] > arr2[mid2]:
                end1 = mid1
                start2 = mid2 + offset
            else:
                start1 = mid1 + offset
                end2 = mid2
        return min(arr1[start1], arr2[start2])

12.进程和线程的区别?

    1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)。

    2、程序运行先创建进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多

    3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以管道pipe或者消息队列进行。

    4、但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

#美团##校招##Java工程师##面经#
全部评论
这全答上来了,为什么说是凉经啊。。
9 回复 分享
发布于 2020-08-29 21:20
什么是容器,我感觉他问得是docker
3 回复 分享
发布于 2020-08-29 21:31
这面试题背背都差不多了
1 回复 分享
发布于 2020-08-30 08:30
你什么时候参加的笔试?
点赞 回复 分享
发布于 2020-08-29 22:15
这是前端?
点赞 回复 分享
发布于 2020-08-30 08:20
打得挺好啊,怎么就凉了?
点赞 回复 分享
发布于 2020-08-30 12:20
感觉不会凉呀,基本都答上来了
点赞 回复 分享
发布于 2020-08-30 13:20
?为啥全是网络和数据库
点赞 回复 分享
发布于 2020-08-30 21:17

相关推荐

15 149 评论
分享
牛客网
牛客企业服务