个人简历
24 岁 杭州 | 本科 3 年工作经验(包含实习一年)
联系方式: 465753286@qq.com
Github: https://github.com/honglvt
期望薪资 25k
求职意向
Android 开发,杭州 /上海
技能树
- 熟悉 mvc,mvvm,mvp 架构,丰富的 andorid(Java、Kotlin)原生,ReactNative 开发经验,熟悉常用设计模式并能熟练运用,例如单例模式、构造者模式、工厂模式、责任链模式、代理模式。
- 熟悉大部分 IOT 协议,熟悉 RS232/RS485/TTL/GPIO 等接口,熟悉蓝牙、wifi、usb 协议,曾经主导大型 IOT 项目
- 熟悉 Retrofit,Okhttp,Rxjava,Gson,Glide 等第三方常用库
- 对异步编程、IO 读写有较深理解,熟练操作线程,以及 Kotlin 协程
- 熟悉 Hotfix,并了解其原理,熟悉支付、分享、地图、音视频、IM 等技术,并且在大型项目中运用。
- 熟悉 Linux,熟练使用 armlinux、ubuntu、centos、macosx 等系统,曾负责搭建公司内网 maven、jekins、jira、confluence 等环境。
- 熟悉 Python、Js,能熟练运用 Python 爬虫,Nodejs 编写中间件或脚本。
- 了解 android 性能优化,例如:内存优化,电量优化,IO 优化
工作经历
2018.6-至今 Android 开发 中国联通产业互联网有限公司
- 负责物联网项目中硬件部分的集成与二次开发
- 负责产品物联网网关的开发
- 3 人 Android 团队的 Team leader,项目开发前的技术选型,整体框架搭建,开发过程中的困难解决
- APP CI 平台搭建以及优化
2017 年 3 月-2018 年 3 月 Android 开发 溢点信息技术有限公司
- 负责旗下易加医医生端(原生)、患者端( Reactnative )的开发
项目经验
一、智慧餐厅
智慧餐厅包括智能点餐结算系统与智能取餐柜,日活 10W+。
1. 智能结算
1.1 采用 RFID 技术,对传统餐盘进行改造,每种餐盘嵌入一块 RFID 芯片,不同 ID 的芯片代表不同的价格。
1.2 中央控制为 Android 工控机,外接 24 寸 HDMI 接口屏幕,读卡器通过串口与工控机相连,当餐盘放在结算台上,读卡器会识别对应的芯片。通过对餐盘内置 IC 芯片第一区域判断菜品 id,第二区做为价格存储区域,第三区域为 ic 卡唯一字符串用于计算当前餐盘总商品数量。
1.3 在计算价格时为了防止重复计算与计算错误,首先会判断 ic 卡第三区域的 ic 序列化唯一性,相同序列号识别为一份商品,随后计算商品总量,在本地计算第一次价格后,与后台计算的菜品价格进行比对,判断价格是否正确,正确则进行扣款。
2. 智能取餐柜
智能取餐柜用于餐品自助存取,用户在点餐平台预定商品后,工作人员会将打包结束的餐品放置于柜子中,用户通过扫码,柜子自动打开,取餐结束
2.1 中控系统为 Android 工控机,外接扫码器,485 锁控板,232 继电器
2.2 项目阶段负责整个系统的硬件选型,开发,布线以及部署
2.3 优化了 Android 串口读写,解决了串口数据接收不完整性,通过自定义队列的形式解决了半双工通信下串口读写的效率
二、物联网网关
物联网网关用于对接硬件,采用 Node.js 编写,用户群体为企业、个人、第三方集成商,在不同的项目中均可使用,它负责提供 http/tcp/websocket 接口给第三方,第三方不需要懂任何硬件读写的知识即可以操作硬件,例如控制闸机开关、齿轮转动。物联网网关包括以下几个模块:
1. 日志系统
请求 /返回 /错误日志存储记录,其中按照每个时段 /种类的日志进行分类,通过文件的形式保存在本地,例如,request 日志在每个小时均会生成一个日志文件,该做法为数据分析,查找 bug 提供了便利
2. 硬件读写系统
硬件读写系统负责读写接入的硬件,集成了通用协议,例如 modbus 协议,crc 算法等等通用工具。例如对闸机的控制,只需要在该模块实现对应功能即可,随后暴露 http 接口给调用者使用。
3. 服务提供系统
服务提供系统,主要提供给调用者具体的接口,例如针对查询反馈的设备提供 http 接口,针对需要保持实时通讯的提供 tcp/websocket 接口。Http 接口采用了 Express 框架,websocket 接口则采用了 Socket.Io 。
4.后台管理系统( web )
后台管理系统主要用于用户可视化需求,用户可以直接在该模块查看日志,设备调试,设备信息查看,网关信息查看,网关升级。
三、智慧影院
该系统实现了自助验票,信息提示,高峰期导流,提高影院信息化水平等功能
- 负责闸机系统的对接,通过串口对闸机控制,当服务端验票成功则发送开闸指令给对应闸机。
- 负责扫码验票系统的对接,外接 485 串口扫码器,对扫码器数据解析( 16 进制转 String ),并提交给服务端
- 服务端为 Powerbuilder 接口,因此客户端采用原生 Socket 与服务器通信,请求参数封装为 Buffer 流传递给服务器,当接收到数据后需要将输入流转换成 String,并且编码为 GB2312。
- 在项目过程中,遇到了 Tcp 服务器不稳定,因此客户端需要实现超时重连的功能。通过每次请求前异步发送一个定时器,如果在 30s 内没有收到服务器返回的数据则取消本次请求,回收所有资源,重置变量,在下一次请求发起时重新建立 Socket 连接
四、易加医 APP
易加医 APP 分为患者端与医生端
医生端(原生)
- 负责 IM 通信模块的开发。因为 SIP 能够在多台 PC 和电话上完成网络消息,模拟 Internet 建立会话,因此语音通信采用的基于 sip 协议的 voip 技术。由于 SIP 是通过 IP 数据包通信,所以节约了传统的通信费,只需要支付日常的服务器带宽费用。
- 负责网络框架的搭建( Retrofit2+Rxjava2+Okhttp3+Gson ),Kotlin 编写
2.1 自定义 Okhttp 的 Interceptor,拦截请求 /返回,并形成日志打印在 Logcat
2.2 自定义 Gsonadapter,简化复杂数据结构
2.3 lambda 消除 subscribe 时回调
患者端( Reactnative )
- 医患聊天界面编写,语音电话通过 RN 调原生实现。在编写界面时需要判断消息的发送者与接受者,从而展示方向不同对话框。
- 表情、文字、图片等功能通过自定义协议实现,在客户端收到消息时会解析该消息类型,从而展示不同类型的消息,在编程时采用工厂模式,不同消息类型通过 Factory.createView()展示不同的界面。
自我评价