湖大-大三-牛客刷题

牛客网刷题

    • 简介
    • 题目

简介

做几道牛客网上的面试题

题目

作者:Lorando
链接:https://www.nowcoder.com/discuss/467270?type=post&order=time&pos=&page=1&channel=1009&source_id=search_post
来源:牛客网

1.自我介绍、项目介绍
省略;
2.ReactNative渲染过程(简历项目)
与我无关
3.state和props的区别(简历项目)
与我无关
4.有哪些HTTP请求方法
先把所有的方法列出来,不止是请求
1.GET方法
    这个方法用于向服务器传送数据查询请求,命令长度有限制,他只是向服务器请求数据,但不会改变数据内容。
   GET方法请求的内容会缓存在浏览器中,这也是GET请求不安全的一个重要原因。
   在GET请求的URL中发送查询字符串(名称/值对),平常我们总是会无意中用到get方法,而可能却浑然不知。
2.POST方法
   POST命令长度没有限制,它可以向服务器传送数据,比如在谷歌的的hackbar插件中,就可以自定义构造post来传送数据,达成自身目的。
    POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。
3.HEAD方法
    EAD方法与GET方法的行为很类似, 但服务器在响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下, 对资源的首部进行检查。使用HEAD, 可以:
   • 在不获取资源的情况下了解资源的情况
   • 通过查看响应中的状态码, 看看某个对象是否存在
   通俗来讲,HEAD的获取内容不比GET详细,更多的使用于检验报文首部,验证数据传输的效果。
head 顾名思义,头部。
4.PUT方法
   PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档, 或者, 如果那个URL已经存在的话, 就用这个主体来替代它。
    显而易见,这很不安全。
    因为PUT允许用户对内容进行修改, 所以很多Web服务器都要求在执行PUT之前, 用密码登录。
5.DELETE
    顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源。但是, 客户端应用程序无法保证删除操作一定会被执行。因为HTTP规范允许服务器在不通知客户端的情况下撤销请求。
显然,这种操作是不安全的。
6.、TRACE方法
    顾名思义,追踪,查询。
    类似于我们在cmd命令行中的命令,对网页请求进行追踪,到底了哪些地方啊,经历了那些服务器之类。
    TRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。
7.OPTIONS方法
OPTIONS方法用来描述了目标资源的通信选项,会返回服务器支持预定义URL的HTTP策略。
8.CONNECT方法
CONNECT方法用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。
GET和POST的区别
    同上
断点续传的实现原理
加粗样式     比如要下载一个电影,中间网络出了问题的话,再次重传明显是浪费时间并且极为不合理的 ,所以,这才有了断点续传。
    在报文段中,会设置ACK和SEQ来进行可靠数据传送,同时还有回退N步和选择重传这些来保障,这也是断电续传的一种解释。
    例如客户端发送ACK=1,SEQ=2,ACK代表这个分组的序号,SEQ代表确认序号,我现在发送的是1,代表我发送了1之前的数据,现在想要2之后的数据.
    中途发生了差错,没有收到,就会验证ACK,SEQ,选择性的 发送报文。

输入URL以后发生的事情
输入URL。例如www.some.edu,
1.同一台用户主机上运行着 DNS应用的客户端。
2.从浏览器上的url抽取出主机名,并把这台主机名传输给DNS应用的客户端。
3.DNS客户向DNS服务器发送一个包含主机名的请求。
4.DNS会收到一份回答报文,其中有该主机的IP地址。
5.浏览器向服务器进程发起TCP连接。
DNS的详细过程
就是前一个问题
TCP三次握手、流量控制
三次握手不说了,流量控制说一下

HTTP为什么使用TCP
1,如果用UDP,网页源文件传输后bai不是会错误百出嘛,浏览器解析的时候不是疯掉了!!!TCP的GBD,SR,检验和,种种保证了他的可靠性传送。
2,UDP链接不安全,不可靠,很多TCP拥有的协议机制他都没有。主要应用在不安全性要求不高,效率要求比较高的应用程序,比如聊天程序。

3,http协议只定义了应用层的东西,下层的可靠性要传输层来保证,但是没有说一定要用tcp,只要是可以保证可靠性传输层协议都可以承载http,比如有基于sctp的http实现。 http也不是不能通过udp承载,在手机上就有人自己开发基于reliable udp的http协议,不过都是非标准的
如何保证线程同步
    /blog.csdn.net/yoonerloop/article/details/81154596
    我只想到这个:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。
写题:两个线程,轮流输出奇数和偶数
这部分用到互斥对象机制

逻辑地址和物理地址
   逻辑地址在我看来就是计算机系统中的虚拟地址,虚拟地址需要经历一系翻译成为物理地址。
页面置换算法
    需要将一个页写回到磁盘中,写那个部分可以实现高效的操作系统运行,这里需要用到页面置换算法。
   FIFO 也就是队列,先进先出,找出那个在磁盘中呆了很长时间的页面把他置换掉
   LRU(Least Recent Used, 最近最少使用)算法 顾名思义,哪个页面不经常使用,就把他替换掉。
   Second Chance(第二次机会)算法
   为了避免FIFO算法将重要的页换出内存,Second Chance算法提供了一些改进。Second Chance算法在将页面换出内存前检查其使用位(使用位前文有介绍),如果其使用位为1,证明此页最近有被使用,猜测它还可能被使用,于是不把它置换出内存,但是把其使用位置为0,随后检查下一个页面,直到发现某页的使用位为0,将此页置换出内存。

写题:最长回文子串(n^2即可)**

你可能感兴趣的:(实习)