美团点评面试题整理

美团点评:

1、git add 和 git commit 的区别

git add   # 从工作区被提交到暂存区,但此时文件并没有真正进入到版本库当中,文件目前只处于一个中间状态。
git commit  # 这个命令将处于中间状态的文件(暂存区的文件)提交到版本库中,这时才算真正完成了一次提交过程。

2、JS交互的原理是什么

# native直接调用js的方法:
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

# JS直接调用native的方法
其实,UIWebView并没有提供JS调用native的方法,但是我们却可以通过间接的方法来实现这样的操作。总结看来,间接实现的方式有三种: 
1. 在代理方法拦截Url,识别判断 
2. Block传值,实现JS调用OC 
3. 模型实现,JS直接用oc方法名来调用oc方法 
4. 使用第三方工具类:WebViewJavascriptBridge

链接:http://www.jianshu.com/p/bdd340b46076

3、为什么说HTTP请求是短连接,怎样才能实现HTTP长连接

# 短连接
在HTTP/1.0中,默认使用的是短连接。
也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
# 长连接
但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:
Connection:keep-alive
客户端的长连接不可能无限期的拿着,会有一个超时时间,服务器有时候会告诉客户端超时时间,譬如:
Keep-Alive: timeout=20,表示这个TCP通道可以保持20秒。
另外还可能有max=XXX,表示这个长连接最多接收XXX次请求就断开。
对于客户端来说,如果服务器没有告诉客户端超时时间也没关系,
服务端可能主动发起四次握手断开TCP连接,
客户端能够知道该TCP连接已经无效;
另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,
如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
# HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
容易混淆的概念——TCP的keep alive和HTTP的Keep-alive
TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。它们是不同层次的概念。
TCP keep alive的表现:当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。
这个“一段时间”可以设置。
# 长连接和短连接的优点和缺点
长连接:长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。
Client 与 server 之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候
短连接:短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
但如果客户请求频繁,将在 TCP 的建立和关闭操作上浪费时间和带宽。

4、Object-C Category和Extension的区别

# Category
用于给class及其subclass添加新的方法
有自己单独的 .h 和 .m 文件
用于添加新方法,而不能添加新属性(property)
#  Extension
Extension常被称为是匿名的Category
用于给类添加新方法,但只作用于原始类,不作用于subclass
只能对有implementation源代码的类写Extension,对于没有implementation源代码的类,比如framework class,是不可以的
Extension可以给原始类添加新方法,以及新属性

5、swift中Class和结构体的区别

* 类是引用类型,结构体是值类型,不能使用===/!== 判断地址
* 类可以继承,结构体不能继承
* 结构体没有deinit 方法
* 创建结构体要比创建对象速度快
* 创建相同属性的结构体比类更加节省内存
* 在数据量比较大的排序中,结构体排序的速度比较慢,因为结构体是值类型,排序的时候,需要大量的赋值运算。而对象只需要交换地址即可。

4、多线程处理都具体用在了什么地方

* 多图片上传使用到了 NSOperationQueue + NSBlockOperation
* dispatch_async(dispatch_get_main_queue(), ^{});用在了下载视频、音乐下载、直播IM等功能上更新UI
* NSThread用在了JS交互上,用来判断是否是主线程 if ([[NSThread currentThread] isMainThread])

5、DB-ORM框架设计

* 所谓ORM,即对象-关系映射(Object/Relation Mapping),方便我们以操作对象的方式去操作关系型数据库。
* 将一个SQL语句以面向对象方式进行设计,构建者模式动态构建表。
* 共包括五个模块,分别是数据库连接对象、构建SQL语句、构建创建表、操作表、附加功能(排序、修改重命名、条件筛选、增加字段、删除字段等)
* 整个框架设计基于构建者模式,迭代器模式遍历表字段

6、响应式编程框架设计

* 响应式编程可以加深你代码抽象的程度,让你可以更专注于定义与事件相互依赖的业务逻辑,而不是把大量精力放在实现细节上,同时,使用响应式编程还能让你的代码变得更加简洁。
* 特别对于现在流行的webapps和mobile apps,它们的 UI 事件与数据频繁地产生交互,在开发这些应用时使用响应式编程的优点将更加明显。

7、MVP框架设计

* MVP分为Model、View、Presenter三层:
* Model作为模型层,在MVP中更偏向于功能的模型,负责对数据的存取操作,例如对数据库的读写,网络的数据的请求等;
* View作为视图层,代表着布局和控件;
* Presenter作为主持层,也就是主持着View与Model之间的交互。
* MVP框架中,断绝了View与Model之间的直接交互,成功的减少了controller中的臃肿代码,使得controller能够保持整洁清晰。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容