文章目录一、自我介绍二、移动终端2.1 React优势2.2 TCP流量控制2.3图像格式jpg、gif、png2.4登录接口实现2.5前端与后端通信三、预估问题四、算法问题
一、自我介绍
个人背景、项目经验、实习经验。
二、移动终端2.1 React优势速度快
React引入了在JavaScript逻辑和实际DOM之间插入的virtual DOM概念,而不是直接操作DOM,性能很好。跨浏览器兼容
virtual DOM可解决浏览器之间的问题,并提供标准化的API。组件化
一切都是组件,代码更加模块化,代码易于重用,维护性强。单向数据流
Flux是一种用于在JavaScript APP应用程序中创建单向数据层的体系结构,随React视图库的开发而概念化为Facebook。同构、纯粹的javascript
由于搜索引擎爬行器程序依赖于服务端的响应而不是JavaScript的运行,因此预呈现APP应用程序有助于优化搜索引擎。兼容性好
使用RequireJS加载和打包时,Browserify和Webpack适用于构建大型APP应用程序。 确保艰巨的任务不会怕人。 2.2 TCP流量控制流量控制
即,控制发送侧的发送速率。
当双方正在通信时,发送侧的速度不一定等于接收侧的速度。 如果发送侧的发送速度过快,则接收侧无法处理。 在该情况下,接收侧仅在缓冲器中存在不能处理的数据(丢失了顺序的数据包也存储在缓冲器中)。 当缓冲区已满时,发送方又会沉迷于发送数据,而接收方只会丢弃收到的数据包。 大量丢包会严重浪费网络资源。 因此,需要控制发送端的发送速率,使接收端和发送端动态平衡。如何控制
接收端每次收到数据包时,发送ACK时,都可以同时向发送端传达自己的缓冲区有多少空闲。 剩下的大小称为接收窗口大小,接收窗口的大小用变量win表示。
通过在发送方收到后调整自己的发送速率,即调整自己的发送窗口的大小,发送方收到win=0后,发送方可以停止发送数据,防止大量丢包。何时再继续发送数据
策略:当接收方处理数据并收到窗口win0时,接收方会向发送方发送通知消息,告知发送方可以继续发送数据。 发送方在收到win0消息的情况下,继续发送数据。
但是,如果丢失了该消息,就会发生在接收方发送了通知消息之后,发送方继续等待数据的发送,发送方等待来自接收方的通知消息的问题,从而导致双方陷入僵局。
为了解决这个问题,还采用了另一种方法。 在发送方接收到接收窗口win=0时,发送方停止发送消息,同时开启定时器,每隔一定时间发送测试消息询问接收方是否能够继续发送数据,如果可能,接收方在此时的接收窗口之下如果接受窗口的大小仍然为0,发送方将再次更新启动计时器。 2.3图像格式jpg、gif、png JPG:颜色很多,可以压缩图像,不支持透明度。 通常用于存储照片等颜色丰富的图像。GIF:颜色较少、简单透明、支持视频,通常用于颜色单一或需要视频的图像。PNG:颜色数量众多,支持复杂的透明度,通常用于显示颜色复杂且要求透明的图像。 2.4实现登录界面2.5前端和后端通信通过GET提交数据。 在开机自检时提交数据。 使用第三方asynchttp客户端发送数据。 三、推断问题(一个商人骑着驴经过1000公里的沙漠,去卖3000根萝卜。 众所周知驴子一次要运1000根萝卜,但每走一公里就吃一根萝卜。问:商人一共能卖多少根萝卜?
答:商人卖得最多就等于驴吃得少,就等于驴走了最短的路。
驴子每走一公里就吃一根胡萝卜,所以尽量保持驴背上的胡萝卜最多,最后剩下的胡萝卜也最多; 另一方面,骑驴最多每段要满载1000匹驴背,每次必须背负1000匹,3000/1000=3,因此道路分为3段,中间需要有两个停靠点
假设第一个停靠点为A,从起点把3000根胡萝卜运到a点,驴子就会来回5趟(第一次回去1000,回去; 第二次1000,回去; 第三次1000,不用回去)。 第一个整数倍是2000。 也就是说,胡萝卜全部运到a点时,胡萝卜的总数为2000根。 所以,a分是吃了5次胡萝卜1000个的地方,也就是1000/5=200公斤的地方。
假设第二个停靠点为B,2000个胡萝卜从a到b是来回3次。 同样,b点设置在距离a点1000/3=333.3公里的地方。
因此驴子从b点出发向目的地出发时,还剩1000根胡萝卜。 距离为800-333=467公里,所以到达目的地后还剩1000-467=533条。
四.算法问题
小Q有n个数字,每次小Q选择任意两个不相同数字,并同时删去他们,最后能不能删完。
输入描述
第一行数字T,表示数据组数,对于每组数据,第一行一个数字N,表示数字个数,N一定是偶数,接下来一行N个数Ai,表示这些数字,满足2<=N<=1000000,1<=Ai<=N。
输出描述
对于每一组数据,输出YES或者NO表示是否可以删除所有的数字。
输入
1
6
1 2 3 4 5 6
输出
YES
输入
1
4
4 4 4 3
输出
NO
思路一:将所有数存入map,按value降序排序,将前两个的value-1,再排序,重复该步骤,当前两个value为0时,则删完。
思路二:只要出现次数最多的那一个数的出现次数小于等于一半就是YES,否则NO。