• Ancestry暑期实习记

    English Version: My Summer Internship at Ancestry

    在我拿到offer之后不久,COVID在美国开始爆发,一时间很多公司开始取消offer或改为远程工作。然而由于Ancestry受到Nexus Tax的限制,我们不被允许在外州(除UT和CA之外的州)远程工作。最后公司决定让我们飞到犹他,然后在公寓里remote onboard。

    6月初我从雪城出发,经芝加哥中转到达盐湖城。出乎我意料的是Lehi这个城市虽小,但是还挺繁华的,路边有不少科技公司的建筑,有Cisco,Adobe这样的大厂,还有好多没听说过名字的小公司和Startup。Uber司机告诉我近几年有很多公司从加州搬过来,而且Facebook也准备在这附近建新的数据中心。

    (more…)
    Read more
  • 一个谜之CORS Bug的调试过程

    这学期的Object Oriented Design课程要求以组为单位做一个项目,我们的项目前端使用Vuejs,后端使用Spring Boot,通过REST API通信。

    有一天前端的朋友告诉我她在调试的时候遇到了一个问题。她在本地运行Vue项目,连接位于AWS上的API。这是一个跨域请求,浏览器会首先发送一个Preflight请求来预检。奇怪的是虽然Preflight请求正常返回了200,但是后面的请求却并没有继续进行。

    * Preflight request – 术语表 | MDN

    我试图在我的电脑上复现这个问题,然而我的电脑上却一切正常,完全不能重现。

    经过各种尝试之后找到了一个突破口——出现问题的这个接口是通过Cloudflare和nginx转发的,而换成直接从Docker暴露出来的8080端口则一切正常。

    (more…)
    Read more
  • 配置Docker Remote Host

    这学期的Object Oriented Design课程的项目我使用Docker来做打包和部署,过去我都是手动ssh到服务器上执行Docker命令来部署新版本。但是这种方式对CI系统则不太友好,我们的确可以让CI系统使用ssh登录到目标主机并执行Docker命令,但是这样就涉及到密码,密钥及sudo的安全性问题,(主要是不够优雅。

    这一次我使用了Docker Remote Host来解决这个问题。Remote Host可以使我们无需ssh登录服务器,仅通过网络即可控制目标主机上的docker daemon。

    首先我们需要了解Docker的命令是如何执行的

    Docker主要分为两部分,daemon和client。

    Docker daemon (dockerd) 监听Docker API的请求,并管理镜像,容器,网络,卷等Docker对象。daemon 也可以和其他Docker daemon通信来管理Docker服务。

    Docker client (docker) 是与Docker引擎交互的主要方式。当使用类似于docker run的命令时,client将命令通过Docker API发送到dockerd。

    (more…)
    Read more
  • AWS网络基础设施

    前段时间我拿到了一个Take Home Project,其中一个题目的内容和在AWS VPC中规划子网(Subnet)有关。借此机会我们可以了解一下AWS的网络架构。

    上图是一个典型的AWS网络架构,本文中我们将介绍上图中各组件的概念及用途。

    (more…)
    Read more
  • 2020 Summer 实习上岸总结

    前文提到,我的秋季学期在无数简历石沉大海之后,以面挂了亚麻VO的惨淡结局收场。

    我当时为了亚麻的VO改了回国的机票,所以回国的时间总共只有十几天。虽然我在回去之前发誓假期要好好刷题,不过大部分的时间都在外面浪,所以爆肝刷题计划失败(

    虽然题没怎么刷,不过简历倒是投了不少。当时春招刚开启,每天都能看到有新的公司放出职位来。这次我在投简历的时候也不仅限于SDE了,DevOps,SRE相关的职位我也投了不少。

    因为这期间投的大多是小公司,回复的速度比大厂快了很多。形式大多是先HR电面,再进行OA和技术电面。我在寒假期间收到了一个VO和1个HR电面,分别来自Ancestry和Shipt,再加上之前就已经约好的Naveego。相对来说都是比较冷门的公司,我把这些面试都排在了开学第一周。

    我在一月初飞回美国之后在纽约玩了两天,在一天早上起来刷LinkedIn的时候看到了一个Quicken Loan的SDE职位,就顺手投了一个。令我没想到的是当天上午,在我坐在1线地铁上前往Battery Park的途中收到了HR发来的短信(是的,短信),和我约了HR电面,同样在开学第一周。

    (more…)
    Read more
  • 2019 Fall学习找工总结

    这几天RSS feed上几乎被各种年终总结刷屏了,不过我没有写年终总结的习惯,就写写这半年在美国学习和找工的总结吧。

    学习

    我们专业的课程安排是每个人都是有相同的四门必修课(Data Structure & Algorithm, SoC Design, Object Oriented Design, Computer Architecture),在此基础上可以自由选择选修课,整个项目一共是30学分,也就是10门课。

    国际学生在第一学期能且仅能选三门课,其中有两门(Data Structure & Algorithm, SoC Design)是被学校安排的。开学前我们曾经去问过SoC Design这门课能不能drop掉,等之后再选,被告知不行。最终我选的三门课是Data Structure & Algorithm, SoC Design, 和Database。

    Roger Chen的Data Structure & Algorithm被往届学生评价为“值回票价的课程”。这门课确实很有用,尤其是对于我这样本科的数据结构基础打得并不扎实的学生来说,这门课覆盖了很多面试中高频但是之前没有深入了解过的内容,比如堆,树,等等。

    (more…)
    Read more
  • 一次乘坐灰狗巴士的经历

    回国的飞机25号下午从JFK起飞,我买了当天凌晨1:20从雪城出发的灰狗,打算第二天早晨到纽约之后在中城闲逛一会再坐地铁去机场。

    因为我之前去纽约就是坐的灰狗,当时感觉体验还是很不错的,而且我确认了当天没有雨或雪,也就没有太担心延误的问题。

    我当天提前一个小时左右到了灰狗站,然而等到1点半车还没到,过了一会车站工作人员广播说1:20的车延误了,让这班车的乘客去柜台。柜台的大哥跟我们说这班车从多伦多途经Buffalo开过来,但是不知道为什么他没有在这里停。所以如果要去纽约的话可以上2:15的那一班。

    我都惊了,居然还有这种操作的?

    (more…)
    Read more
  • 一次令人自闭的算法作业

    最近一次Data Structure & Algorithm课程的作业是要求实现Dijkstra算法,并且其中的排序部分要使用最小堆来实现。

    Dijkstra的基本思路如下

    1. 初始时,S只包含起点s;U包含除s外的其他顶点,且U中顶点的距离为”起点s到该顶点的距离”[例如,U中顶点v的距离为(s,v)的长度,然后s和v不相邻,则v的距离为∞]。

    2.从U中选出”距离最短的顶点k”,并将顶点k加入到S中;同时,从U中移除顶点。

    3.更新U中各个顶点到起点s的距离。之所以更新U中顶点的距离,是由于上一步中确定了k是求出最短路径的顶点,从而可以利用k来更新其它顶点的距离;例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。

    4.重复步骤(2)和(3),直到遍历完所有顶点。

    我们的作业要求是在步骤2中的“选出距离最短的顶点”要用堆来实现。也就是说,我们需要维护一个最小堆,里面包含有起点到各个尚未访问到的顶点的(目前为止的)最短距离。每一次更新各个顶点到起点的距离时,都要更新堆中所有顶点的值。这样,每次寻找距离最短的顶点时,直接取出堆的根即可,省去了每次都要遍历一遍来寻找最小值。

    我们要求的实现逻辑是这样的:维护一个如下的routing table,其中存储了每个节点的id,是否已经访问过,到出发点的最短距离,和该节点在堆中对应的位置。每次访问图中的一个节点时,都要在routing table中更新该节点及其所有后继节点的距离和其他信息。

    node012
    is_visitedtruetruefalse
    cost013
    heap_position012

    我写完提交之后,被告知我的solution在小用例上部分正确,大用例上报vector越界的运行时错误。

    (more…)
    Read more
  • 纽约游记

    自从8月中来到雪城之后,虽然同在纽约州,但是和纽约市还有近300mi的距离。安排好入学和生活上的事情之后,我终于在9月初如愿去了纽约。

    我乘坐灰狗巴士从雪城出发,一共大约5小时的车程。灰狗的舒适程度比我预想的要好不少,车上有WiFi,电源插座和卫生间。在路上看到对面的高速公路上的一辆装着大型机械的卡车,挂着Oversize Load的旗子,和美卡里面的Heavy Cargo Mod一模一样,太帅了。

    大约中午12点的时候巴士到达了Port Authority的巴士站。车站位于曼哈顿中城的正中心的地下,出门之后的斜前方就是纽约时报的总部。纽约时报的总部原本位于时报广场,后来才迁到这里。

    (more…)
    Read more
  • New York State Fair 纽约州土味大集

    在诸多人的安利下,趁着Labor Day的长周末去了趟New York State Fair。纽约的State Fair是全美国第一个大规模的农畜产品展,最早一届是在1841年,就是在雪城举办的。每年只开两周,今年是从八月22号开到九月3号,错过了只能再等下一年。

    因为当天是本年度State Fair的倒数第三天,再加上是个周末,在高速上就开始堵车,堵了超过3mi的路程。路边有几个房车营地,里面停满了房车。恐怕真的有不少人是拖家带口开着房车过来的。

    从10号门进入Fairground之后,首先看到的是一个牛棚。

    我们在路上堵着的时候,同行的学长跟我说:

    “我去年来的时候,他们在牛棚里搭了个摄像头在YouTube上直播。他也不说话,就播那个牛。”

    “美国人真的是…他们就过来看看牛,看看猪赛跑,就觉得特别快乐。我去年来的时候,牛棚里边有一个看台,我去的时候就看见一个人坐在那看牛,等我下午走的时候他还在那看牛。”

    (more…)
    Read more