2023秋招大厂经典面试题及答案整理归纳(241-260)校招必看

本文整理了2023年秋季招聘中各大公司面试的典型问题及其解答,涵盖了算法、HTTP状态码、数据结构、数据库恢复、并发控制等多个方面。例如,如何在二维01矩阵中找到全为1的最大正方形,理解HTTP的各种状态码,如301、302、303和307的区别,以及如何初始化指针数组、设计模式的应用等。此外,还讨论了如何保证UDP通讯的数据可靠性,MySQL索引优化以及微博系统在高并发情况下的性能问题。这些问题旨在考察求职者的编程能力、系统设计和问题解决技巧。
摘要由CSDN通过智能技术生成

241. 在一个二维01矩阵中找到全为1的最大正方形,返回其面积。

样例 10 10 0 10 111 11111 10 0 10 返回4

 
 

public int max Square (int [] [] matrix; { // write your code here int row = matrix, length; /#丁大小 int line = matrix [0]. length. //列大小 //一个与matrix相同大小的辅助数组 int [] [] tmp = new int [row] [line]; W matrix的第一行和第一列元素直接存放到 for(int i=0;i<row;i++){ tmp [i] [0] = matrix [i] [0:; for (int i=0;Kline;i++) { tmp [0] [i] = matrix [0] [i:; for(int i=l;i<row;i++){ for(int j=l;j<line;j++)[ if(matrix[i] [j] == 1){ tmp[i] [j]= Math, min (Math, mm ( tmp[i-l] [j], tmp[i] [j-1]:, tmp[i-l] [j-1]) + 1; if(matrix[i] [j] == 0){ tmp[i] [j] = 0; int max=0; //记录tmp中最大元素的值(tmp中元素值表示正方形的边长) for(int i=0;i<row;i++){ for(int j=0;j<line;j++)[ if (tmp[i] [j] > max)[ max = tmp[i] [j]. return max*max;


242.常见的HTTP状态码

1XX系列响应代码仅在与HTTP服务器沟通时使用。

100("Continue") 这是对HTTP LBYL (1 o ok-b ef or e-you-1 e sp )请求的一个可能的响应。该响应代码表明: 客户端应重新发送初始请求,并在请求中附上第一次请求时未提供的(可能很大或者包含敏 感信息的)表示。客户端这次发送的请求不会被拒绝。对LBYL请求的另一个可能的响应是 417("Expectation Failed")。 请求报头:要做一个LBYL请求,客户端必须把Expect请求报头设为字符串 〃100-continue气除此以外,客户端还需要设置其他一些报头,服务器将根据这些报头决定 是响应100还是417。 101("Switching Protocols") 当客户端通过在请求里使用Upgrade报头,以通知服务器它想改用除HTTP协议之外的 其他协议时,客户端将获得此响应代码。101响应代码表示“行,我现在改用另一个协议了”。 通常HTTP客户端会在收到服务器发来的101响应后关闭与服务器的TCP连接。101响应代 码意味着,该客户端不再是一个HTTP客户端,而将成为另一种客户端。 尽管可以通过Upgrade报头从HTTP切换到HTIPS,或者从HTIP1.1切换到某个未来的 版本,但实际使用Upgrade报头的情况比较少。Upgrade报头也可用于HTTP切换到一个完 全不同的协议(如IRC)上,但那需要在Web服务器切换为一个IRC服务器的同时,Web客 户端切换为一个IRC的客户端,因为服务器将立刻在同一个TCP连接上幵始使用新的协议。 请求报头:客户端把Upgrade报头设置为一组希望使用的协议。 响应报头:如果服务器同意切换协议,它就返回一个Upgrade报头,说明它将切换到那 个协议,并附上一个空白行。服务器不用关闭"P链接,而是直接在该"P连接上幵始使用 新的协议。 2XX:成功 2XX系列响应代码表明操作成功了。 200("0K") —般来说,这是客户端希望看到的响应代码。它表示服务器成功执行了客户端所请求的 动作,并且在2XX系列里没有其他更适合的响应代码了。 实体主体:对于GET请求,服务器应返回客户端所请求资源的一个表示。对于其他请求, 服务器应返回当前所选资源的一个表示,或者刚刚执行的动作的一个描述。 -201 ("Created") 当服务器依照客户端的请求创建了一个新资源时,发送此响应代码。 响应报头:Location报头应包含指向新创建资源的规范URI。 实体主体:应该给出新创建资源的描述与链接。若已经在Location报头里给出了新资 源的URI,那么可以用新资源的一个表示作为实体主体。 -202("Accepted") 客户端的请求无法或将不被实时处理。请求稍后会被处理。请求看上去是合法的,但在 实际处理它时有出现问题的可能。 若一个请求触发了一个异步操作,或者T•需要现实世界参与的动作,或者一个需要很 长时间才能完成且没必要让Web客户端一直等待的动作时,这个相应代码是一个合适的选 择。 响应报头:应该把未处理完的请求暴露为一个资源,以便客户端稍后查询其状态。 Location报头可以包含指向该资源的URI。 实体主体:若无法让客户端稍后查询请求的状态,那么至少应该提供一个关于何时能处 理该请求的估计。 203(^Non"Authoritative Information^; 这个响应代码跟200 —样,只不过服务器想让客户端知道,有些响应报头并非来自该服 务器一他们可能是从客户端先前发送的一个请求里复制的,或者从第三方得到的。 响应报头:客户端应明白某些报头可能是不准确的,某些响应报头可能不是服务器自己 生成的,所以服务器也不知道其含义。 204("No Content") 若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用 此响应代码。服务器也可以对GET请求返回此响应代码,这表明“客户端请求的资源存在, 但其表示是空的”。注意与304 ("Not Modified")的区别。204常常用在Ajax应用里。服务 器通过这个响应代码告诉客户端:客户端的输入已被接受,但客户端不应该改变任何UI元 素。 实体主体:不允许。 205("Reset Content") 它与204类似,但与204不同的是,它表明客户端应重置数据源的视图或数据结构。假 如你在浏览器里提交一个表单,并得到响应代码204,那么表单里的各个字段值不变, 可以继续修改它们;但假如得到的响应代码2D5,那么表单里的各个字段将被重置为它们的 初始值。从数据录入方面讲:204适合对单条记录做一系列编辑,而205适于连续输入一组 记录。 206("Partial Content") 它跟200类似,但它用于对部分GET请求(即使用Range请求报头的GET请求)的响应。 部分GET请求常用于大型二进制文件的断点续传。 请求报头:客户端为Range请求报头设芝一个值。 响应报头:需要提供Date报头。ETag扌艮头与Content-Location报头的值应该跟正常 GET请求相同。 若实体主体是单个字节范围(byte range),那么HTTP响应里必须包含一个 Content-Range报头,以说明本响应返回的是表示的哪个部分,若实体主体是一个多部分实 体(multipart entity)(即该实体主体由多个字节范围构成),那么每一个部分都要有自 己的 Content-Range 报头。 实体主体:不是整个表示,而是一个或者多个字节范围。 3XX重定向 3XX系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。它们通常用 于GET请求。他们通常告诉客户端需要向另一个URI发送GET请求,才能得到所需的表示。 那个URI就包含在Location响应报头里。 300("Multiple Choices") 若被请求的资源在服务器端存在多个表示,而服务器不知道客户端想要的是哪一个表示 时,发送这个响应代码。或者当客户端没有便用Accept-対艮头来指定一个表示,或者客户 端所请求的表示不存在时,也发送这个响应代码。在这种情况下,一种选择是,服务器返回 一个首选表示,并把响应代码设置为200,不过它也可以返回一个包含该资源各个表示的URI 列表,并把响应代码设为300 o 响应报头:如果服务器有首选表示,那么它可以在Location响应报头中给出这个首选 表示的URI。跟其他3XX响应代码一样,客户端可以自动跟随Location中的URI。 实体主体:一个包含该资源各个表示的UKI的列表。可以在表示中提供一些信息,以便 用户作出选择。 301("Moved Permanently") 服务器知道客户端试图访问的是哪个资源,但它不喜欢客户端用当前URI来请求该资 源。它希望客户端记住另一个听1,并在今后的请求中使用那个新的听1。你可以通过这个 响应代码来防止由于URI变更而导致老URI失效。 响应报头:服务器应当把规范URI放在Location响应报头里。 实体主体:服务器可以发送一个包含新反1的信息,不过这不是必需的。 302(“Found") 重要程度:应该了解,特别市编写客户端时。但我不推荐使用它。 这仓响应代码市造成大多数重定向方面的混乱的最根本原因。它应该是像307那样被处 理。实际上,在HTTP 1.0中,响应代码302的名称是” Moved Temporarily",不幸的是, 在实际生活中,绝大多数客户端篁它像303 —样处理。它的不同之处在于当服务器为客户端 的PUT, POST或者DELETE请求返回302响应代码时,客户端要怎么做。 为了消除这一混淆,在HTIP1.1中,该响应代码被重命名为"Found",并新加了一个响 应代码307。这个响应代码目前仍在广泛使用,但它的含义市混淆的,所以我建议你的服务 发送307或者303,而不要发送302.除非你知道正在与一个不能理解303或307的HTIP1.0 客户端交互。 响应报头:把客户端应重新请求的那个URI放在Location报头里。 实体主体:一个包含指向新听1的链接的超文本文档(就像301—样)。 303("See Other°) 请求已经被处理,但服务器不是直接返回一个响应文档,而是返回一个响应文档的URK 该响应文档可能是一个静态的状态信息,也可能是一个更有趣的资源。对于后一种情况,303 是一种令服务器可以“发送一个资源的表示,而不强迫客户端下载其所有数据"的方式。容 户端可以向Location报头里的URI发送GET请求,但它不是必须这么做。 303响应代码是一种规范化资源URI的好办法。一个资源可以有多个URIs,但每个资源 的规范URI只有一个,该资源的所有其他URIs都通过303指向该资源的规范URI,例如: 303 可以把一个对 http: //ww. example, com/software/current, tar. gz 的请求重定向到 http://www. example.com/software/1.0.2.tar. gzo 响应报头:Location报头里包含资源的URI。 实体主体:一个包含指向新听1的链接的超文本文档。 304("Not Modified") 这个响应代码跟204 (〃N。Content")类似:响应实体主体都必须为空。但204用于没有 主体数据的情况,而304用于有主体数据,但客户端已拥有该数据,没必要重复发送的情况。 这个响应代码可用于条件HTTP请求(conditional HTTP request).如果客户端在发送GET 请求时附上了一个值为Sunday的If-Modified-Since报头,而客户端所请求的表示在服务 器端自星期日(Sunday)以来一直没有改变过,那么服务器可以返回一个304响应。服务器 也可以返回一个200响应,但由于客户端已拥有该表示,因此重复发送该表示只会白白浪费 宽带。 响应报头:需要提供Date报头。Etag与Content-Location报头的值,应该跟返回200 响应时的一样。若Expires, Cache-Control Vary报头的值自上次发送以来已经改变,那 么就要提供这些报头。 实体主体:不允许。 305("Use Proxy") 这个响应代码用于告诉客户端它需要再发一次请求,但这次要通过一个HTTP代理发送, 而不是直接发送给服务器。这个响应代码使用的不多,因为服务器很少在意客户端是否使用 某一特定代理。这个代码主要用于基于代理的镜像站点。现在,镜像站点(如 http://ww.exajnple.com.mysite.com/)包含跟原始站点(如 http://ww.exajnple.com/) —样的内容,但具有不同的听1,原始站点可以通过307把客户端重新定向到镜像站点上。 假如有基于代理的镜像站点,那么你可以通E把http://proxy.mysite.com/ig为代理,使 用跟原始URI (http://ww. example, com/)—样的URI来访问镜像站点。这里,原始站点 example, com可以通过305把客户端路由到f 地理上接近客户端的镜像代理。web浏览器 一般不能正确处理这个响应代码ÿ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值