自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 快手iOS实习面试总结

快手面试。3. 内存分区: 函数分配在哪个区?栈区(stack):- 存放的局部变量、先进后出、一旦出了作用域就会被销毁;函数跳转地址,现场保护等;- 程序猿不需要管理栈区变量的内存; 对于基本数据类型的变量,则直接存储它的值,对于引用类型的变量,则存的是指向对象的指针-栈区地址从高到低分配;堆区(heap): 堆区...

2019-09-09 09:37:59 1365

转载 五大查找之:哈希查找 解决hash冲突

https://www.cnblogs.com/wuchao解决hash冲突的三个方法目录开放定址法 线性探测再散列 二次探测再散列 伪随机探测再散列 再哈希法 链地址法 建立公共溢出区 优缺点 开放散列(open hashing)/ 拉链法(针对桶链结构) 封闭散列(closed hashing)/ 开放定址法 通过构造性能良好的哈希函数,可以减少冲...

2019-08-20 12:07:51 1003

转载 10亿个数中找出最大的10000个数(top K问题)

https://blog.csdn.net/will130/article/details/49635429问题:先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10...

2019-08-20 11:59:26 287

转载 java实现二分查找-两种方式

二分查找算法思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表...

2019-08-20 11:23:09 171

原创 Java常见设计模式

https://www.jianshu.com/p/1c3a7ab5c527一、单例模式定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。二、单例模式特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。说一说单例模式?它是怎么实现的?怎么保证这个单例是线程安全的?饿汉...

2019-08-20 11:16:46 122

转载 AFNetworking(v3.1.0) 源码解析

https://juejin.im/entry/5bf626b2f265da614e2bb7dd一、架构AFNetworking 一共分为 5 个模块,2 个核心模块和 3 个辅助模块:Core NSURLSession(网络通信模块) AFURLSessionManager(封装 NSURLSession) AFHTTPSessionManager(继承自 AFURLSe...

2019-08-20 10:45:14 172

转载 iOS 多线程:『GCD』

https://www.jianshu.com/p/2d57c72016c6GCD 任务和队列同步执行(sync): 同步添加任务到指定的队列中,在添加的任务执行结束之前,会一直等待,直到队列里面的任务完成之后再继续执行。 只能在当前线程中执行任务,不具备开启新线程的能力。 异步执行(async): 异步添加任务到指定的队列中,它不会做任何等待,可以继续执行任务。 可以...

2019-08-20 10:35:14 123

原创 B站iOS校招面经

iOS:1.说说OC的修饰符,weak和assign的区别,为什么weak会释放后会为nil底层原理知道吗,copy修饰NSArray会拷贝吗strong和retain的区别,http://www.cocoachina.com/articles/224632.runtime除了消息转发还知道啥,用过没有,通过一个变量生成一个类?我做一个动画怎么获取它每时每刻的高度说一说iO...

2019-08-19 19:44:01 573

原创 iOS Runloop面试

https://www.jianshu.com/p/de752066d0ad一、基本概念1、runloop是什么? ———— O用一个字来形容runloop的话,runloop就是————圈。或者说是英文字母——O。这样的形象比喻,想要说明的是runloop的特性——runloop是一个事件循环对象。一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需...

2019-08-19 12:05:00 341

原创 iOS程序执行顺序和UIViewController 的生命周期

https://www.jianshu.com/p/d60b388b19f5UIViewController的 生命周期#pragma mark --- life circle// 非storyBoard(xib或非xib)都走这个方法- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle...

2019-08-19 11:27:10 146

原创 记美团iOS实习面试总结

1. 你做的app怎么保证他的安全性我可以提我做的登录,有个记住用户名密码存在哪里,我一开始保存在NSUserDefaults中的保存在NSUserDefaults中的信息也是一样的,所以对于存在NSUserDefaults中的东西,最好混淆加密一下再存储。NSUserdefault 中不要保存关键信息,如果要保存,还是加密吧。。sqlite也是这样子的。不使用NSUserDefa...

2019-08-16 10:51:21 602

原创 剑指offer 删除链表中重复的结点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef?tpId=13&tqI...

2019-08-15 17:02:11 120

原创 剑指offer 二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&tP...

2019-08-14 14:25:10 111

原创 剑指offer 数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&tqId=11190&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/ques...

2019-08-14 11:29:42 114

原创 TCP流量控制与拥塞控制

一:流量控制什么是流量控制?流量控制的目的?所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送:流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。如何实现流量控制?由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也...

2019-08-07 10:49:44 757

原创 Linux基础:线程同步(互斥锁与信号量的作用与区别)

“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号...

2019-08-01 15:43:46 947

转载 TCP协议是如何保证可靠传输的

https://www.cnblogs.com/xiaokang01/p/10033267.htmlTCP通过序列号、检验和、确认应答信号、重发控制、连接管理、窗口控制、流量控制、拥塞控制实现可靠性。1. 确认应答和序列号序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送A...

2019-07-30 17:43:12 448

原创 如何讲清楚TCP的三次握手和四次挥手

SYN 包:建立连接请求的包 同步序列编号Synchronize Sequence NumbersFIN 包:切断TCP 连接的包 ACK 包:针对SYN 包和FIN 包的确认应答包 ACK(Acknowledgement)即是确认字符TCP建立连接的三次握手第一次握手:客户端向服务器发送连接请求报文SYN(syn=j),...

2019-07-30 16:43:11 245

原创 Leecode 删除链表中的节点 JAVA

https://leetcode-cn.com/problems/delete-node-in-a-linked-list/请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,...

2019-07-22 16:57:59 112

原创 剑指offer 从尾到头打印链表 JAVA

题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-i...

2019-07-22 15:10:45 142

转载 http常见的状态码

https://www.runoob.com/http/http-status-codes.html下面是常见的HTTP状态码:200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在 500 - 内部服务器错误...

2019-07-16 17:50:45 185

转载 输入url到页面返回的全过程

输入url到页面返回的全过程https://blog.csdn.net/Cs_hnu_scw/article/details/79896621https://blog.csdn.net/ty987654/article/details/78007319https://blog.csdn.net/samjustin1/article/details/52650520第一步.查询DNS...

2019-07-16 17:41:33 315

原创 剑指offer 合并有序链表 JAVA

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。public class 合并有序链表 { public static void main(String[] args) { ListNode list1 = new ListNode(1); ListNode list2 = new List...

2019-07-16 11:32:24 85

原创 链表中环的入口节点--java

一 判断是否有环的思路--快慢指针首先创建两个指针1和2(在java里就是两个对象引用),同时指向这个链表的头节点。然后开始一个大循环,在循环体中,让指针1每次向下移动一个节点,让指针2每次向下移动两个节点,然后比较两个指针指向的节点是否相同。如果相同,则判断出链表有环,如果不同,则继续下一次循环。例如链表A->B->C->D->B->C->D,两个...

2019-02-14 15:39:47 334

原创 快速排序--java

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。下面直接看代码:publi...

2019-02-11 11:03:35 203

转载 swift 4.0 访问控制权限

Swift中的访问级别有以下五种:open: 公开权限, 最高的权限, 可以被其他模块访问, 继承及复写。 public: 公有访问权限,类或者类的公有属性或者公有方法可以从文件或者模块的任何地方进行访问。那么什么样才能成为一个模块呢?一个App就是一个模块,一个第三方API, 第三等方框架等都是一个完整的模块,这些模块如果要对外留有访问的属性或者方法,就应该使用public的访问权限。pu...

2019-02-01 11:50:03 320

原创 项目中没有Podfile,创建一个Podfile文件

这里我以pod SnapKit为例子1. 首先进入你要pod项目的目录     cd  工程目录2. 进来之后创建 Podfile        touch Podfile3. 然后  ls 就可以看的刚创建的Podfile4. 使用vim编辑Podfile文件  进入如下页面 然后使用vim 编辑命令     i     ( insert的意思)编辑完后按  es...

2019-01-28 17:43:16 1335

原创 屏幕适配 autolayout Compact,Regular,Any 解析

         项目中遇到了屏幕适配问题,,比如手机和ipad字体大小约束,设置了好了手机的,ipad的上的又不对,诸如此类的问题很多。上面原本的Font栏就是设置的手机屏幕的字体大小wRegular | hRegular:     就是设置的ipad下字体大小同理,其他约束也可以分手机和ipad比如:随便一个约束双击进去就可以设置不同屏幕下的约束。原理:...

2019-01-16 15:50:36 1056

原创 Swift中的willSet与didSet

       属性观察者会观察并对属性值的变化做出回应。每当一个属性的值被设置时,属性观察者都会被调用,即使这个值与该属性当前的值相同。       你可以选择将这些观察者或其中之一定义在属性上: willSet 会在该值被存储之前被调用。 didSet 会在一个新值被存储后被调用。       如果你实现了一个 willSet 观察者,新的属性值会以常量形式参数传递。你可...

2019-01-10 18:09:36 453

转载 探究 UIViewController 生命周期—swift

loadView()loadView() 即加载控制器管理的 view。 不能直接手动调用该方法;当 view 被请求却为 nil 时,该方法加载并创建 view。 若控制器有关联的 Nib 文件,该方法会从 Nib 文件中加载 view;如果没有,则创建空白 UIView 对象。 如果使用 Interface Builder 创建 view,则务必不要重写该方法。 可以使用该方法手动...

2018-12-26 15:11:10 894

原创 swift 4.0 代码设置启动后的第一个页面

 修改项目配置文件      1、选中项目文件->TARGETS->General;      2、清空Deployment Info栏目的 Main Interface项。 修改AppDelegate.swift文件      1、选中AppDelegate.swift文件;      2、重写application didFinishLaunchin...

2018-12-26 12:20:52 2011

原创 swift - 可选与解包

   可选表示变量中可能没有值。可选的值要么是指定类型的实例,要么是nil。   使用类型名加上"?" 表示。// 如果没有赋初始值,默认值就是nilvar anOptionalFloat:Floatvar anOptionalArrayOfStrings:[String]?var anOptionalArrayOfOptionalStrings:[String?]?解包:...

2018-12-18 10:41:17 382

原创 swift 类型安全和类型推断

        Swift 是一门类型安全的语言。类型安全的语言可以让你清楚地知道代码可以处理的值的类 型。如果你的一部分代码期望获得 String ,你就不能错误的传给它一个 Int 。 因为 Swift 是类型安全的,他在编译代码的时候会进行类型检查,任何不匹配的类型都会被标记为错误。这会帮助你在开发阶段更早的发现并修复错误。 当你操作不同类型的值时,类型检查能帮助你避免错误。当然,这并不意味...

2018-12-17 16:29:09 326

原创 swift 与objective-c区别

1.  Swift 增加了 Objective-C 中没有的类型,比如元组。元组允许 你来创建和传递一组数据。你可以利用元组在一个函数中以单个复合值的形式返回多个值。2.  Swift 还增加了可选项,用来处理没有值的情况。可选项意味着要么“这里有一个值,它等 于 x”要么“这里根本没有值”。可选项类似于 Objective-C 中的 nil 指针,但是不只是类,可选 项也可以用在所有的类型上...

2018-12-17 16:00:08 1123

原创 Leetcode--买卖股票的最佳时机2--JAVA

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...

2018-09-26 16:41:04 483

原创 Leetcode--买卖股票的最佳时机--JAVA

废话不多说直接上代码,时间复杂度O(n^2)public class 股票{ public static void main(String[] args) { int [] a= {7,6,4,3,1}; System.out.println(maxProfit(a)) ; } public static int maxProfit(int[] prices) {...

2018-09-26 15:38:35 368

原创 玩转IOS界面间传值

几种常见的页面传值方式:1.属性传值2.单例传值3.NSUserDefaults传值4.block传值1.单例传值和属性传值ViewController.h:#import <UIKit/UIKit.h>@interface ViewController : [email protected]#import "ViewControlle...

2018-05-24 11:17:06 199

原创 浅谈 Integer的自动拆箱和装箱

public class IntegerDemo { public static void main(String[] args) { Integer i1 = 128; Integer i2 = 128; System.out.println(i1 == i2); System.out.println(i1.equals(i2)); System.out.pri...

2018-05-23 14:23:21 869

原创 静态代码块、构造代码块、构造函数、普通代码块

1.静态代码块在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块:执行:静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。作用:一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中...

2018-05-22 21:26:05 228

原创 Leetcode 螺旋矩阵 -java

矩阵分圈处理  最外圈 内圈import java.util.ArrayList;import java.util.List;public class 转圈打印矩阵 { public static void main(String[] args) { int a [] [] = {{1,2,3},{4,5,6},{7,8,9}};// int a [][] = {{1...

2018-05-20 12:18:59 429

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除