STEAM 创业第 230 天(曲终人散)

片尾曲

已经是创业的第 230 天了,创业项目因为各种原因(归根到底还是钱的问题)不得不告一段落。

本文将简单记录下最近的工作,以及一些公司的面试经历,同时也给对创业或是跳槽感兴趣的同学一些参考建议。

重拾嵌入式开发

大概一两个月前,我们团队有了一个 IDEA —— 开发一款编程启蒙玩具,拿到众筹市场探探行情。所以最近的这两个月,我重拾了之前的嵌入式开发知识,一直在开发这款编程启蒙玩具 —— 口袋飞碟。

「口袋飞碟」本质上是一个迷你版的循线小车,体积是普通鼠标的 80%,同时能够识别多种颜色并改变发声或者运动状态。

电路设计

主控芯片用的是熟悉的 STM32F0 系列中的一种,我参考了一些开源的电路设计,设计出了 1.0 版本电路板。在此特别感谢「南洋 PT」 管理组中的一位 IC 大佬,提供了很多非常宝贵的建议。

电路绘制和制板比较推荐「立创」:支持在线 EDA 设计电路、一键购买元器件、在线下制板贴片单,确实非常方便。如果电路使用的芯片都比较常规而且热门,制板和贴片价格非常亲民。

PS:立创商城请联系我打广告费!

驱动开发

1.0 电路板制板完成之后,便是到了令人头秃的驱动开发环节。我并不敢保证第一版的电路完全 OK,所以驱动开发经常会陷入一种「到底是驱动问题还是硬件问题」的自我怀疑状态。

驱动开发过程中最麻烦的应该是彩色 LED 灯 WS2812C 和电机驱动 DRV8837CDSGR 了。

WS2812C 对高低电平的时序误差要求非常高,低电平的持续时间在 300ns 左右,而一个时钟周期是 20ns 左右。最开始使用 nop 方法来延时,但是无论怎么调整 nop 数量,都没有办法正常驱动。

看到网友们都是用示波器观察波形再调整 nop 的数量,顿时想通了:应该要把程序中其它代码的运行时间考虑进去。抱着试一试的心态,我在 KEIL 软件中开了仿真一步步计算程序的耗时,最终确定了不同情况下的 nop 数量。具体的解决过程就不废话了,没有过嵌入式开发经验的同学估计是一脸茫然。

DRV8837CDSGR 的问题主要在于硬件故障,当然也是试了很多板子之后才发现问题。VEML6040 颜色传感器的读写问题在于器件地址的位移问题,主要是 7bit 转 8bit 的过程。

创业凉凉征兆

一家企业开始倒的征兆是什么?答:不断画饼、拖欠工资云云。

是的,从我意识到拖欠工资开始,这次的创业多半是要凉了。我不后悔参与创业,只是后悔没有早些抽身。

各股东一开始认领的资金没有到位、没有新资金注入、市场推广进度慢、一直依赖的渠道方持续画饼,种种迹象已经表明项目要到头了。

我现在异常认同「希望是最可怕的」这句台词,也是因为还抱有希望,不愿意去相信项目的实际进展,导致我持续地将精力耗在项目上。

虽然项目濒临失败,我也损失了一些钱和机会,但还好并不是一无所获:我的构架设计能力、Laravel 熟练程度、Vue 的熟悉程度、Electron 开发和嵌入式开发等都有相应的提高。

最最不济,也多了一次失败的经历,以后不会把项目的成败关键寄托在「不了解」或者「不靠谱」的人身上。

一些面经

最近有投微软、华为、阿里、腾讯、Shopee 几家公司,简单说一些面试经历和一些内容,供参考。

微软

请人内推了一个北京的岗位,一周内 HR 联系到我,推荐了一系列苏州的岗位。在安排面试前就有聊大概的定级范围和薪资范围,这点还是很 Nice 的。

考虑到微软的技术栈太「自家」了,就和 HR 说打算后面再投,所以便没有下文。如果确定苏州定居,微软确实很值得尝试。

华为

华为应该是有 4~5 面:第一轮技术面、第二轮是级别高些的技术面、第三轮主管面、四五轮是 HR 面及定薪定级。目前我是第三轮面试结束,因为华为最近组织架构调整,后面的面试安排时间迟迟不定。

华为每一面都要自我介绍,第一面主要内容主要围绕 Docker 和 Python,比如 Docker 的网络模式、Docker 实现原理、Python 多进程和多线程,也会聊一些简历上的项目内容,最后是做两道算法题(LeetCode 中等或者简单级别)。

第二面聊项目内容多一些,其次是聊 Python,也有问到 Python 多线程相关的内容,总体来说不会很难。

第三面是主管面,主管好像比较忙(或者是网络不是很好),聊天意愿不强。主要就聊了创业的事情,问了以后是否还会创业、对加班的看法云云。

后面从其他朋友了解到,面试的部门主要在西安和成都,而且工作时间大多是早 9 晚 11,我有点慌。

阿里

阿里前端智能部门的小伙伴通过我的「AI Pocket」开源项目找到我,并给我安利了一波。岗位主要工作内容是赋予前端 AI 能力,个人感觉也是比较有前景的(当然也是充满挑战)。

第一面技术面先聊了点项目内容,再聊了些 JS 的基础和机器学习的知识点,总体来说还行。

第二面技术面侧重点在于机器学习,当然也是根据项目内容去问,项目中没提到的不会揪着问,毕竟这个岗位是要招交叉领域的候选人,和纯算法或者纯前端面试不同。

第三面的面试官是内推我的技术大咖,因为第二面的面试评价有一点是「意愿不强」,所以特地问了下我的意向,同时也比较详细地介绍了团队的工作内容和前景。面试官最后温馨提示,流程比较长,后面还有 Boss 面和 HR 面,让我耐心等待。

腾讯

腾讯应该是流程最繁琐而且含糊的了。

内推之后一周内,面试官联系我第一轮电面,之后一直没有消息,内推人说流程还未结束。某一天,HR 突然联系我确认岗位信息,说是会给部门看简历然后安排面试。

我告知已经一面结束,HR 很懵,说是会和面试官同步信息。之后流程一直 Pending,也没其它消息,可能是要过年回家了不准备继续了?

Shopee

Shopee 也叫虾皮,是一家跨境电商,势头很猛,据说不怎么加班。这是我投得最晚,但是流程最快的一家了。目前已经有口头 Offer,因为定级定薪未达到期望,我有些犹豫。

Shopee 总共有三面,第一轮远程技术面,通过之后会联系安排第二轮的现场面试(报销往返车费和一晚住宿),包含主管技术面和 HR 面。当然,如果主管面不过就没有 HR 面了。

第一面先是自我介绍,随后问一些计算机基础知识,再是问一些项目上的内容,最后一道算法题。

第二轮先是主管技术面,总共耗时一个半小时左右。上来先自我介绍,然后挑一个项目画出架构图,接下来开始针对架构图中的每一部分进行提问。一波问完之后,开始问一些 TCP、HTTP 相关问题,也有问到数据库的索引、Redis 持久化、ES 分片机制、RAID 0/1/5 的区别等等,总之就是不断地往深问,直到答不上来为止。

主管面完会按套路让我问些问题,他给我解答,再之后就是 HR 过来面试。HR 面主要就是了解一些个人背景、求职意向以及期望薪资之类的了。

面试考察点

列举一些经常考察的知识点,仅供参考。总体来说,基础知识要牢记、简历上的项目要准备充分、算法题就多刷 LeetCode 吧。

Linux 系列:常用命令及用途、机器性能排查方法

进程线程:进程线程区别、僵尸进程、孤儿进程、上下文切换、进程通信方式

TCP/UDP:TIMEWAIT 及周边知识点、三次握手与四次挥手、流量控制与拥塞控制、TCP 与 UDP

HTTP:状态码、Restful、1.0 与 2.0、HTTPS 原理

数据库:索引结构、二叉树/B-/B+树、最左前缀匹配原则、ACID、事务隔离级别与现象、锁的理解

ES:倒排索引、数据存储与更新、分片机制、性能问题

Redis:分布式部署方式、持久化方式与区别、支持的数据类型、缓存雪崩与时效性问题

Python:垃圾回收机制、多线程与多进程、对 GIL 的理解、常用的 Python 包、版本 2 与 3 的区别

高可用:金丝雀部署、服务部署更新方式、Service Mesh 的理解

容器:Docker 的网络模式、Docker 实现原理、集群搭建过程和难点

监控:监控报警方案、Prometheus 工作原理

算法:LeetCode 刷题

前排出售自己

本人多年后端开发经验(PHP/Python)、能独立写前端(Vue)、有 Docker Swarm 集群运维经验、项目中实践过 CI/CD、了解敏捷开发,同时还有些 NLP 的项目经验和微信小程序开发经验(详看 AI Pocket),如果有大佬的公司需要我这样的,欢迎勾搭(非诚勿扰)!

不过,大概也没啥人会看到哈哈哈~