logo头像
Snippet 博客主题

面试题解答

http协议

  1. http的post和get啥区别

    • 提交方式:
      GET把请求数据放在URL后,POST放在body中
    • 传输数据大小:
      GET:HTTP协议没有限制,但是浏览器有;POST理论上不受限制,web服务器限制;
    • 安全:GET提交数据,用户名密码将明文出现在URL上.
  2. http长连接

    • HTTP/1.0默认是短连接,浏览器和服务器进行HTTP操作,就建立连接,任务结束就中断.
    • HTTP/1.1默认是长连接,在响应头中加入Connection:keep-alive,用于传输HTTP的TCP链接不会中断.
  3. 聊下HTTP的POST的body体使用form-urlencoded和multipart/form-data的区别
    post提交的数据是放在body中的,http协议没有规定其编码方式,服务端要根据请求体(header)中的content-Type来得知body中的编码方式.

    • form-urlencode:表单数据被编码为键值对(name=myName&password=myPassword),默认是这种.
    • multipart/form-data:单个消息头包含多个消息体的解决方案,一般用于上传图片等,请求头Content-Type: multipart/form-data; boundary=${bound},请求体要有分隔符和参数描述信息.
    • application/json 告诉服务端,body是序列化的字符串.
  4. HTTPS的加密原理

  5. 网络通讯中加密方式有哪些,各自的原理

线程

  1. 使用 atomic 一定是线程安全的么?
    原子性只是增加了正确的几率,不保证线程安全.atomic保证了getter和setting方法的线程安全,不保证整个对象的线程安全.例如对数组,一个线程写数据,一个线程读数据,就不是线程安全,因为跟setter和getter没有关系.

未分类

  1. 通过[UIImage imageNamed:]生成的对象什么时候被释放?
    通过这个方法,系统现在bundle中找,找到了就加到缓存,用来重复调用,因此可能有内存问题.该方法返回的是个autorelease对象,不一定在引用计数0的时候释放,实在autoreleasepool结束的时候释放

  2. iOS下所有的本地持久化方案。

  3. applicationWillEnterForeground和applicationDidBecomeActive都会在哪些场景下被调用?

    缓存,URL缓存
    https://www.geekpeer.com/Development/ios/3080.html
    https://blog.csdn.net/liulanghk/article/details/46432931

  4. 使用SDWebImage内存暴涨解决方法

    • 在setImageWithUrl回调里对图片进行压缩.
    • [[SDWebImageDownloader sharedDownloader setShouldDecompressImages:NO];禁止解压缩操作
    • 在dealloc中清楚缓存或者didReceiveMemoryWarning在收到内存警告的时候释放