美文网首页
菜鸡的面试记录

菜鸡的面试记录

作者: 漫行者_ | 来源:发表于2018-05-08 21:21 被阅读51次

    爱奇艺电话面试:

    (1)请描述在浏览器中输入一个url,到浏览器显示页面的过程。请尽量详细。

    可分为3个部分:
    1.从浏览器到服务器
    2.服务器接受HttpRequest请求之后的变化
    3.浏览器接受到返回数据之后的变化
    对于第一步:
    浏览器通过DNS服务器,获得网址对应的IP地址。之后通过TCP协议与服务器通过“三次握手”建立连接。
    其中三次握手协议的过程:

    • 客户端发送标志为SYN=1,seq=j的数据包到服务器
    • 服务器收到该数据包包之后,发送标志位SYN=1和ACK=1,ack=j+1,syn=k的数据包。
    • 客户端接收到数据包之后,检查ACK是否为一,ack是否为j+1.检查正确之后发送ACK=1,seq=j+1的数据包
      对于第二步:
    • WEB容器接收客户请求解析。
    • WEB容器首先检查是否已经创建好了Servlet的实例对象,如果创建好执行第4步,否则执行第2步
    • 创建Servlet实例对象(只有首次访问时候才创建目标Servlet)
    • 调用Servlet的init()方法
    • WEB容器创建一个用于封装HTTP请求消息请求的HttpServletRequest对象和一个封装响应消息的HttpServletRespose对象,然后调用Servlet的Service()方法将请求和响应对象作为参数传进去,写入响应消息。
    • WEB容器再发出HTTP响应将结果发送给浏览器
      对于第三步
      浏览器将响应内容进行渲染

    (2)介绍一些MVC

    1.model
    代表一个存储数据的对象,有时候也代表数据库中存取对象
    2.view
    将model的数据可视化
    3.control
    负责转发请求,对请求进行处理。

    (3)Map有几个子类,以及查找时间复杂度。

    HashMap和TreeMap。

    • HashMap查找复杂度为常数级,根据键的hashcode存储value。
    • TreeMap查找复杂度为log(n),键的对象需要继承comparable接口。会感觉键进行排序。因此插入删除会消耗时间。红黑树的插入和删除的时间复杂度均为O(lg(n))。

    ArrayList和LinkedList的区别,以及相关操作的时间复杂度.

    -ArrayList由数组实现,查找复杂度为O(1),删除,增加复杂度为O(n)
    -LinkedList由链表实现,查找复杂度为O(n),删除,增加复杂度为O(1).

    (4)ArrayList和Vector里面数组如果满了。采取什么方案解决

    -ArrayList创建一个新的数组,数组的长度为之前长度的1.5倍,并远数组的内容复制到该数组中。添加数据的时间复杂度为O(1);Arraylist是线程不安全的
    -Vector创建一个新的数组,数组长度为之前长度的2倍。Vector是线程安全的。因此效率不及Arraylist。

    (5)给出两个链表,如果有相交节点。设计一个算法如何判断,并给出时间复杂度和空间复制度。

    将第一个链表的每个值依次传进hashSet中。再遍历第二条链表,通过if语句判断是否存在hashset中。时间复杂度为O(l1+l2),空间复杂度为O(l1)的存储空间。

    (6)如果链表中有环如何解决。

    • 依然可以用hashset解决,遍历链表,存储到hashset中,如果出现重复的节点者返回。
    • 弄两个指针,一个快指针,每次走两步,一个慢指针每次走一步。如果出现相交情况则说明有环。

    网易电面(突然打电话过来,有些慌乱,过程很不好)

    (1)java的三大特性

    继承,动态,封装(平时没在意这些,只答出两个)

    (2)数据库事物的隔离级别

    • 读未提交(脏读:读取到了未提交的数据)
    • 读已提交(不可重复读:一次事物两次相同查询的结果不同)
    • 可重复读(幻读:事物A先查询匹配若干行,事物B再进行增加或者删除。之后A查询匹配的结果集和之前不同)
    • 串序列化

    (3)线程同步的几种方式

    • 使synchronized关键字修饰的方法。
    • 使用synchronized关键字修饰的代码块
    • 使用lock进行加锁
    • 使用TreadLocal获得数据的副本,从线程独立,互相不影响。

    (4)可重入锁

    以后再补充。。。

    其他公司

    (1)内连接,完全连接,左连接,右连接

    (2)volatile和transient的使用场景

    (3)STUDENT表中有SNO CNO SCORE,学生编号,课程编号,分数,查询所有课程都及格的学生编号。

    (4)写一个方法,向数据库中插入一千万个不同的随机数。

    (5)对三个字符串找出最长公共子串

    (6)写出一个数组的所有子集合,并用list返回

    (7)写出两个字符串中最长公共子序列

    (8)Servlet,SpringMVC中的control,struct中的action是否为线程安全,并说出原理。

    (9)IO和NIO的区别


    相关文章

      网友评论

          本文标题:菜鸡的面试记录

          本文链接:https://www.haomeiwen.com/subject/rauwrftx.html