携程、阿里、京东、腾讯iOS春招面试过程以及面试题总结!

简介: 面经包含:携程、阿里、京东、腾讯五一假期,春招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结。楼主是今年春招的时候开始看看面经,真题做的很少,很水=。

面经包含:携程、阿里、京东、腾讯

五一假期,春招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结。

楼主是今年春招的时候开始看看面经,真题做的很少,很水=。=,惭愧惭愧。然后秋招的时候由于实习比较忙,所以基本上就只投了秋招正式批,内推要么没投,要么踩线投,直接没了音信……

楼主iOS开发,主要用的Swift语言。下面上一些面经,希望能够对大家有那么一点点帮助。

    • *

今日头条

楼主春招的时候采用的是广撒网的战术(因为当时完完全全是个菜鸡,iOS大部分都是边春招边学的。。)也是侥幸拿到了头条暑期实习生的offer,然后阴差阳错的决定到北京来实习,然后暑期结束之后拿到转正的offer。

当初巧合来的头条,来了之后觉得特别好,哈哈,趁机推荐一波。实习工资(正式还没谈)、福利、部门、地理位置都还不错,到现在也还在实习。

    • *

携程

携程是一家很令人蛋疼的公司。

内推投了携程,通过了测评。然后进入了漫长的等待,某周打电话跟我说,问我能不能去上海面试,我说我在北京实习,能不能远程面试。hr倒是很爽快的答应了,并且约定两天后面试……

然而,就此被鸽,进入了漫长的等待期。后来给携程校招组发反馈,终于获得了面试机会,两轮面试感觉答得还行,题也不是很难,然而就那么突然有一天gg了。

携程面试题

一面

  1. 请看下面一段代码static int a = 1; int main(){ int m = 2; char *n = NULL; l = (char *)malloc(100 * sizeof(char)); return 0; }请问访问m,n,l 3种类型变量的效率从高到低依次是()

    A. lnm
    B. mnl
    C. mln
    D. nlm
  2. 请写出一个单例
  3. 请写出程序计算结果

    AB两地相距1000米,小明从A地点以30米/分钟的速度向B地点走,小白从B地点以20米/分钟的速度向A地点走,两人同时出发,用代码写出他们多少分钟后遇到?
  4. 请写出程序输出结果

    对数组 ["12-12","12-11", "12-11", "12-11", "12-13", "12-14"] 去重同时进行排序
  5. 使用递归方法计算99到1相加的计算结果。是否了解无尾随递归?
  6. 请看下面一段代码
- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_queue_t queue1 = dispatch_get_main_queue();
    dispatch_async(queue1, ^{NSLog(@"222 Hello?");});
    NSLog(@"aaaaaaa");
}

程序结果将输出
A. 死锁
B. 打印“aaaaaaa
222 Hello?”
C. 打印“222 Hello?
aaaaaaa”
D. 打印“”

二面

  1. 请说一说UITableView的重用机制
  2. 请说一说你对Objective-C中property字段的了解
  3. 请说一说你对iOS中内存管理的了解。ARC底层时如何实现的?
  4. 你是如何进行网络层的封装的?
  5. 你是如何学习iOS开发的?
    • *

阿里巴巴

我对阿里整体印象还是不错的。春招的时候动作特别慢,基本隔两周面试一次,最后发offer都等了快一个月。不过这次秋招动作很快,两天就搞完了三面,两面技术都是很快,而且也都是问问项目,感觉加起来还没hr面时间长。

阿里面试题

一面

  1. 为什么要用Alamofire而不用原生的NSURLSession,Alamofire的优势是什么?
  2. 如果让你来封装一个网络库,类似于Alamofire或者SDWebImage,你会如何实现?
  3. 在网络库中,如何针对TableView快速滚动过程中的图片额外渲染进行优化(网络库不能持有TableView)?

二面

  1. iOS的系统架构是怎么样的?常用SDK有哪些?
  2. 了解HTTP协议吗?GET和POST的区别是什么?
  3. 对安全方面有何了解?如何应对web页面被劫持?了解HTTPS加密解密的过程吗
    • *

京东

京东总体来说还是体验不错的,和前两面的面试官相谈甚欢。整体感觉一面面官很注重基础,二面面官更看重项目一些,基本上都是根据简历和项目来问的。然而就在我志得意满之时突然接到了三面的电话(说好的只有两面技术面呢),然后各种怼我……

京东面试题

一面

  1. 讲一讲你对iOS内存分配的理解?值类型和引用类型?
  2. 假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现?
  3. 这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?
  4. 函数中的闭包,如果要求闭包执行完后立刻改变函数中某个变量的值,应该如何实现?
  5. 如何实现一个类似于微信聊天界面的布局?
  6. 如何用Auto Layout实现一个如下要求的布局: %^&@$^@(#!...... (说了一大堆 =。= 反正就是使用优先级就解决了)

二面

  1. 说一说 MVC 和 MVVM 的区别,以及各自的优缺点。
  2. 如何将 MVC 改造成 MVVM ?在MVVM中,网络请求、缓存处理的部分应该放在哪个模块?
  3. 为什么说Swift是面向协议的语言?使用 Protocol 有什么好处?
  4. 比较一下 Swift 和 Objective-C 在语言层面上的安全性?
  5. 如果ViewController中使用闭包时,用weak避免循环引用,会有什么问题?
  6. 当点击一个View时,发生了什么?如何扩大点击区域?
  7. 如何对TableView进行优化?
  8. 能讲一讲你对光栅化的理解吗?

三面

  1. 对Swift和OC有什么看法?
  2. 能对Swift中的可选类型谈下你的理解吗?
  3. 说一下快排的伪代码和时间复杂度?
  4. 怎么判断两个链表是否相交?
  5. 怎么反转二叉树?
  6. 了解元组吗?
  7. 了解多线程吗?
  8. 什么是并行?
  9. 现在有ABC三个任务,如何实现AB完成后再执行C?
  10. 对 Runtime 有什么了解?
  11. HTTP 和 HTTPS 有什么区别?
  12. 知道 HTTPS 通信过程吗?
  13. Struct 和 Class 有什么区别?
    • *

腾讯

腾讯的面试真的非常的注重基础,两个面官都对iOS不是很懂,而且对项目也没有太深入的探讨,只是让说了一下项目的架构,感觉就是想确认一下这个东西是不是你自己做的。第一面面完之后完全没涉及到iOS相关的知识,导致我面完之后问面试官是不是我当时投错了岗=。=!另外,腾讯HR态度是真的很好,赞一个。

一面

  1. 为什么要设计Cache?Cache分级有什么好处?
  2. 如何保证多核数据的一致性?
  3. c++ new 和 malloc 有什么区别?
  4. c++ 可不可以多继承?
  5. c++ 引用和指针的区别?
  6. 如何判断两个链表是否有交点?
  7. 堆区和栈区有什么区别?为什么要这么设计?
  8. 给栈增加一个Max函数接口,返回当前栈的最大值,应该如何设计?
  9. 给定排好序的整数数组array[]以及整数n,如何找出和为n的两个数?
  10. 如果没排好序呢?
  11. 一个字符串,如何找出只出现一次并且最先出现的字符?

二面

  1. 反转字符串
  2. 判断整数是否为$2^n$
  3. 一个m*n的棋盘,有些格子不能走,如何找到左上角到右下角的最短路径?
  4. iOS 按下 Home 键之后会发生什么?
  5. c++中内存分配是怎样的?
  6. c++中常用的容器有哪些?
  7. queue和vector有什么区别?
  8. vector底层是怎么实现的?
  9. TCP三次握手?为什么两次不行?
  10. 项目中有没有服务器push机制?
    • *

结语

春招投的简历不多,面试也就这几家,还有几家在安排面试,之后有更新再继续更新。如果有想看答案的,或者觉得在这里格式不是很清晰的,可以添加iOS开发者交流群:763164022!答案在群文件里面都是有的!

目录
相关文章
|
1月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
12天前
|
SQL 关系型数据库 MySQL
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
|
1月前
|
消息中间件 存储 canal
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?
|
1月前
|
消息中间件 架构师 Java
阿里面试:秒杀的分布式事务, 是如何设计的?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试阿里、滴滴、极兔等一线互联网企业时,遇到了许多关于分布式事务的重要面试题。为了帮助大家更好地应对这些面试题,尼恩进行了系统化的梳理,详细介绍了Seata和RocketMQ事务消息的结合,以及如何实现强弱结合型事务。文章还提供了分布式事务的标准面试答案,并推荐了《尼恩Java面试宝典PDF》等资源,帮助大家在面试中脱颖而出。
|
1月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
|
1月前
|
Kubernetes 架构师 算法
阿里面试:全国14亿人,统计出重名最多的前100个姓名
文章介绍了如何解决“从全国14亿人的数据中统计出重名人数最多的前100位姓名”的面试题,详细分析了多种数据结构的优缺点,最终推荐使用前缀树(Trie)+小顶堆的组合。文章还提供了具体的Java代码实现,并讨论了在内存受限情况下的解决方案,强调了TOP N问题的典型解题思路。最后,鼓励读者通过系统化学习《尼恩Java面试宝典》提升面试技巧。
阿里面试:全国14亿人,统计出重名最多的前100个姓名
|
1月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
16天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
17天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
下一篇
无影云桌面