zEcong Chai's blogs

每天进步一点点,坚持带来大改变。


  • 首页

  • 归档

  • 标签

再见了,广州

发表于 2019-02-08
再见了,广州 前言在写这篇文章的时候,我已经离开广州两周了。对于这座生活了将近10年的城市,有太多太多话想对你说。 背景年前通过内部转岗,一个人背着行囊,来到了杭州,开始新一阶段的逐梦之旅。 我的大学 2010年,怀着向往和激动的心情,第一次踏上广州这片土壤。在校期间,大部分时间都还是在学校里面度过,通过校学生会,各种社团组织,认识到了我成年后的第一班朋友。学生时代,还没有太多公立,大家都是为学业、学生工作一起努力,一起玩耍。 说到学生工作,我在大二大三的时候和几个同学在学校里面开始了自己人生中第一次创业合伙,团队人数最高达到200余人。这里要非常感谢与我合作的几个好朋友,他们几个非常适合 ...
阅读全文 »

蚂蚁转岗复盘

发表于 2019-01-31
蚂蚁转岗复盘 最近由于一些变动,申请了内部转岗。本次转岗一共面了4轮 + 一轮项目佬大面谈。下面我就将每一轮面试的问题包括自己的一些理解与大家分享,希望能为近期准备面试的童鞋们带来一些帮助。 第一轮 技术面 (面试官:P7)问题: 主流图片加载框架的对比,Glide优化原理及设计思想。 图片加载框架封装设计,为什么这么设计。 网络库封装设计,OKHttp,Http及Https相关知识点。 对MVC、MVP、MVVM的理解。 动态加载方案的原理,Tinker原理、DynamicLoadApk原理,及两者对比。 本轮面试考核的侧重点在于一些开源框架的原理的理解及设计模式的选择,说到设计模式,我又 ...
阅读全文 »

十字路口

发表于 2019-01-13
十字路口最近由于公司规划问题,在转岗过程中发生了很多事情,给我最大的感触还是四个字:“江湖义气”。 在这个过程中,其实已经有两个机会已经拿下,当然被拒的情况也有,主要是广州这边内部的机会。这一次我有我的选择,更加看重团队积极性、技术氛围及项目前景。 就在上上周,我谈下来了一个广州本地的内部机会,不过这个机会也有一些风险,这里涉及到隐私就不多提。不过我是比较看好下来这一波的业务迭代,觉得可以搏一搏,加上又是广州的机会,所以就答应了下来。 过后几天,一天晚上9点多一个HRG突然找我,说第二天有个负责人要找我聊。我当时一愣,“我好像没有投那边的机会呀,咋突然找到我”。后来我去问了我们领导,这一问下了 ...
阅读全文 »

头条适配方案原理解读

发表于 2018-12-31
头条适配方案原理解读原理日头条屏幕适配方案的核心原理在于,根据以下公式算出 density 当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = density density 的意思就是 1 dp 占当前设备多少像素 12345678910111213141516171819public static float applyDimension(int unit, float value, DisplayMetrics metrics) { switch (unit) &# ...
阅读全文 »

回首2018

发表于 2018-12-27
回首2018站在2018年的末端,莫名的有一些伤感,也有些许对新的一年的小期待。伤感源于亲人的离去和一些目标没达成,不是因为自己不够努力,可能与时运相关吧。而期待则是源于对生活与幸福新的认识。下面我分别从情感、事业、学习几个维度总结一下自己的这一年。 情感 在年初,我和前任分手了,这一次是和平分手。关于这一次,我要感谢我的前任。在我这20多年来最低谷的时期,她的出现,让我短暂忘却了烦恼,享受了热恋带来的愉悦。虽然最后因为性格上的不合大家都选择了分开。其实这段感情,主要问题出在我自己身上,在还没走出上一段刻骨铭心的阴影下就匆匆忙忙的又开始了这一段感情,这对她来说太不公平了,所以最后还是难逃分手。 ...
阅读全文 »

OKHttp源码解析

发表于 2018-12-25
OKHttp源码解析整体结构图 整体的流程图 五大拦截器RetryAndFollowUpInterceptor拦截器RetryAndFollowupInterceptor是重试重定向拦截器,它的主要作用是负责失败重连。OkHttp中的重定向功能是默认开启的。 总结RetryAndFollowupInterceptor拦截器: 创建StreamAllocation对象。 调用RealInterceptorChain.proceed()进行网络请求。 根据异常结果或响应结果判断是否进行重新请求。 调用下一个拦截器,对Response进行处理,返回给上一个拦截器。 BridgeIntercept ...
阅读全文 »

设计模式的6大基本原则

发表于 2018-12-19
1.前言设计模式中的6大基本原则是为了让我们在应用开发中能够拥抱变化,也就意味着在后续升级、维护过程中不破坏系统稳定性并保持高可扩展性、高内聚、低耦合,让项目经历多个版本后依然保持清晰、灵活、稳定的系统结构。 2.六大原则 优化代码第一步:单一责任原则 让程序更稳定更灵活:开闭原则 构建扩展性更好的系统:里氏替换原则 让项目拥有变化的能力:依赖倒置原则 系统有更高的灵活性:接口隔离原则 更好地扩展性:迪米特原则 3.详情3.1 单一责任原则一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。比如当要做一个图片加载器的时候,不应该把所有的东西都写 ...
阅读全文 »

大厂面试题

发表于 2018-12-12
阿里UC:dvm和jvm的区别 class文件和dex文件有什么区别 虚拟进程空间,用户空间和系统空间分别是做什么的 http和https的区别,https是怎么认证的 binder机制 stackoverflowError和OutOfMenoryError如何发生的 retrofit实现,使用场景 okhttp和retrofit的区别 httpurlconnection,httpclient, 和okhttp的区别 handler,message,thread, messageQueue, Looper 之间的关系 虚拟机内存如何划分的? gc机制和对应的算法 app启动过程,Activit ...
阅读全文 »

Android 刘海屏及9.0适配

发表于 2018-10-02
前言在分享适配刘海屏之前,先吐槽一波苹果。居然搞了个畸形屏幕,如果乔大爷还在,这种产品还能问世吗? 1.解决方案思路通过上图我们不难看出,在刘海屏/圆角屏手机,为保证UI视图能完整展示,我们应通过计算,获取到可用区域的宽高(蓝色区域),并且尽量避免我们的view/window超出此区域,特别注意交互事件。这里有个点要注意:在Android P之后,状态栏区域如果要显示window,必须在Mainfest中添加权限。 2.Android P之前的刘海屏适配在P之前,国产厂商在Android P之前(基本都是Android O)就用上了高档大气上档次的刘海屏,所以,这也造就了各大厂商在Androi ...
阅读全文 »

Flutter学习笔记(一)

发表于 2018-09-15
Flutter是什么?Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。简单来说,Flutter是一款移动应用程序SDK,包含框架、控件和一些工具,可以用一套代码同时构建Android和iOS应用,并且性能可以达到原生应用一样的性能。详情请参考Flutter简介 Flutter的性能如何,与RN、Weex、Cordova有何不同?React-Native、Weex核心是通过Javascript作为桥接调用nati ...
阅读全文 »
123
zEcong Chai

zEcong Chai

积极 乐观 有爱 分享

25 日志
© 2014 - 2019 zEcong Chai
由 Hexo 强力驱动
主题 - NexT.Muse