Skip to content

Latest commit

 

History

History
139 lines (103 loc) · 5.85 KB

11天猫蚂蚁金服百度面试题2018年4月.md

File metadata and controls

139 lines (103 loc) · 5.85 KB

天猫蚂蚁金服百度面试题2018年4月

作者:ZhHS&&juejin.im/post/5ad80ad35188252eae3b22a4

天猫 面试通知

NAVER China 整个面试过程三个小时

  • GCD
  • 定时器的几个类方法底层分别是怎么实现的([NSTimer timerWithTimeInterval:repeats: block:]等)
  • KVO、delegate、通知的区别以及底层实现
  • Struct与Union主要区别
  • 思维题:情景:20个主人,20条狗,在同一个小区每天在同一个地方同时遛狗,狗主人绝对聪明,一旦发现自己家的狗是疯狗,回家之后就会用枪把狗打死。第一天晚上遛狗回家后没有听见枪响,第二天晚上遛狗回家后没有听见枪响,第三天晚上遛狗回家后听见多声枪响,请问有多少条疯狗。 条件: ①狗主人不能直接发现自己家的狗是否是疯狗,可以发直接现别人家的狗是否是疯狗,凭此可以推断自己家的狗是否是疯狗 ②狗主人遛狗期间不会有任何交谈 ③疯狗不会传染

蚂蚁金服

  • iOS11的新特性
    • 参考Apple 官网
  • 点击应用图标到启动应用整个过程,系统进行了什么操作
  • swift相关知识
  • Apple pay的支付流程
    • 参考Apple 官网流程即可

百度一面

  • 写一段程序判断文本框内输入的IP地址是否合法

    • @"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"
    • 开头结尾是否空格,是否为空,是否字符串类型
    • 0.0.0.0 合法, 00.0.0.0 不合法,
    • IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
    IP地址是否合法:Java代码参考内容
    if(addr.length() < 7 || addr.length() > 15 || "".equals(addr))
             {
                 return false;
             }
             /**
              * 判断IP格式和范围
              */
             String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
    
             Pattern pat = Pattern.compile(rexp);
    
             Matcher mat = pat.matcher(addr);
    
             boolean ipAddress = mat.find();
    
             //============对之前的ip判断的bug在进行判断
             if (ipAddress==true){
                 String ips[] = addr.split("\\.");
    
                 if(ips.length==4){
                         try{
                             for(String ip : ips){
                                 if(Integer.parseInt(ip)<0||Integer.parseInt(ip)>255){
                                     return false;
                                 }
    
                             }
                         }catch (Exception e){
                             return false;
                         }
    
                     return true;
                 }else{
                     return false;
                 }
             }
    
             return ipAddress;
  • ➕ 的实现逻辑

  • runtime的相关知识

  • autorelease的使用场景

    • for循环中,创建大文件
  • plist读写操作如何进行锁管理

    • 使用dispatch _barrier
    • 赋值时候不可以读和其他读写,读取的时候可以多处读取
  • NSNotification实现逻辑,子线程中给主线程发送通知,主线程是否会处理通知

    • 在多线程应用中,Notification在哪个线程中post,就在哪个线程中被转发,而不一定是在注册观察者的那个线程中。
    • 苹果之所以采取通知中心在同一个线程中post和转发同一消息这一策略,应该是出于线程安全的角度来考量的。官方文档告诉我们,NSNotificationCenter是一个线程安全类,我们可以在多线程环境下使用同一个NSNotificationCenter对象而不需要加锁。
    • 尽量在一个线程中处理通知相关的操作,大部分情况下,这样做都能确保通知的正常工作。不过,我们无法确定到底会在哪个线程中调用dealloc方法
  • 编译器怎么检测#import和#include导入多次的问题,三方库导入时如何设置**""和<>**

    • ifdef def #endif
    • if __has_include(<>)

百度一面

  • 关于业务方面以及性能方面的问题
  • 组件化的问题
  • 怎么修复线上卡顿、崩溃问题,
  • 项目结构等等

觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)

链接