成功润到爱尔兰2周时间了,因为刚一直在办各种东西。慢慢的生活开始步入了正规。从今天开始,我会陆续分享一些来爱尔兰工作留学初期的一些攻略。一方面自己经历了很多坑,另一方面现在终于成功了一些,也算是有些经验可以帮助到大家。

爱尔兰国旗

第一篇 电话卡

SIM card

初来国门,办爱尔兰电话卡往往是大家需要做的第一件事。

  1. 上蜂窝网络(也就是流量)。虽然国内电话卡可以通过漫游上网,但一则比较贵25CNY一天,二则没法上外网,这里经常用的谷歌地图/搜索用不了,还得翻墙。
  2. 很多 办理各种证件 或 注册账号 的地方没法用号码,比如银行卡、当地人互相联系用的WhatsApp(类似微信)、居留卡。
  3. 电话联系当地人。初来乍到有很多要联系的当地人,如 接机的司机,临时住宿的房东,学校/公司联系人。有本地电话会方便实惠很多。

上面陈述了这么多办爱尔兰电话卡的必要性,那么怎么办呢?

一般有3个办电话卡的地方:

  • 机场。在机场的Arrival大厅,就有很多提供给外地人的服务,包括 货币兑换、机场到市中心的交通服务、和 SIM卡。机场办卡的优点就是可以第一时间拿到SIM,缺点就是一般会比较贵,套餐也不划算,可供的选择也相对少很多。
  • 线下门店。包括运营商的门店和顺便卖SIM卡的Newsagent(卖报纸杂志的店)和某些超市。优点是可供选择的多;缺点是时间窗口相对窄,基本都是早9晚6,交通成本高,不方便,尤其是你的临时住宿在郊区的话(可能性很大)。
  • 线上网站。优点是选择最多,便宜,方便;缺点是需要一个地址,还要等2天才能收邮件(SIM卡)。

大家可以根据自己的需求和偏好选择合适的办卡方式。

阅读全文 »

户口作为中国特色的制度,一直以来是人们考虑工作、生活、定居的重要内容。从三十年前父辈们费尽心机从农村户口转到城市户口,到现在的我们,为了北京户口而煞费苦心。很多东西变了,但又有些东西没变。

幸运的是,北京市今年也出台了《户口新规》。大多数内容都没变,只是其中的“单列指标”给了我们机会。

单列指标 解读:

第十一条 以下引进项目实行计划单列:
市委市政府重点支持的集成电路、人工智能、医药健康等高精尖产业,“两区”建设重点落地项目,本市市级“服务包”企业,重点税源、重点引进、重点培育企业以及独角兽企业,招聘世界大学综合排名前200位的国内高校本科及以上学历毕业生,或“双一流”建设学科硕士研究生;

企业有资质。一般大公司基本都在名单上。如BAT,TMD,诸多外企也包含在内。

员工有资质。世界前200本科及以上,被官方认可的是7所学校,清北交复浙南中(清华大学、北京大学、复旦大学、上海交通大学、浙江大学、中国科学技术大学、南京大学)。至于双一流硕士就多了,详见教育部名单。有很多学校和专业和名单上的不大一致,这个时候就需要看学校和学院的解释和往年案例了。因为我们今年是第一年,没有往年案例,只能摸着石头过河了。因为我们毕业时的专业是 北航 “计算机技术”,与名单中的“计算机科学与技术”不完全一致。但在实践中,还是算双一流的,符合落户要求的。

一般去优秀的公司校招生基本都符合要求。比如我司今年17位国内院校的硕士毕业生,只有4个不在名单上。幸运的是,因为之前有2个户口名额。之前抽中户口的同学可以走单列了,把这2个名额空出来了。因此,4个人再分这2个名额。最后的结果是,绝大多数人都拿到了户口名额。

另外,因为单列说的是2年以内毕业的同学。因此,除了我们21届的同学,20届和19届的也可以参加。最后,全公司有40+人走了单列。

另外大家关心的一个很重要的问题是,1年指标 还是 3年指标。
办理落户的2种名额需要满足交社保半年或三年,不过即使半年的名额,到落户完成基本也需要近一年,因此大家还是叫做 一年指标。
不同于之前的名额指标,单列政府并不限制1年还是3年,交由公司和毕业生协商。比较良心的公司(比如 我司亚马逊),就会让同学们自己选。当然大家都选一年的了。
但我也听说很多公司,甚至是大家熟悉的大厂(美团、字节等),会强制3年的,有甚者会签一个5年服务期的协议。3年落户后,如果干不到5年,需要赔偿公司钱。政府的用意是给公司节约用人成本,但这些厂真是吃相难看到不行。同情这些厂的同学们,人数还不少。在这5年服务期里任人宰割,薪资待遇还不涨,没法跳槽。

落户流程

阅读全文 »

新年快乐,离2021年结束还有3天。我终于提笔开始了我一年一度的年终总结和新年展望。最近发现写年终总结的同学越来越多,但我其实不是跟风。我很早就开始每年写年终总结。一开始是在日记本里,后来在博客里。除了每年辞旧迎新的时候,我还会在人生阶段性里程碑写下总结和展望,比如本科毕业和硕士毕业。

之前的年终总结:

里程碑回顾:

这些重要的博文都放在我博客的dairy分类下

2021年工作回顾

很多时候,很难相信,明年就是2022年了。有些时候,在写日期的时候,都不得不想一想今年是哪一年。大概是年龄大了。之前就听说过,人越长大,对时间的感觉就越匆忙。因为增加的时间占自己的记忆比重会越来越小,也是十分有道理的。现在的我,甚至很难相信疫情已经持续了快2年。之后的时间也会越来越快,比较好的应对方法是:1. 好好地把握当下,不虚度年华;2. 增加生活的多样性,不变的生活会让人感觉过的更快。3. 多增加记录,无论是照片还是文字,记录下来的会让记忆变厚。

针对我去年的新年展望,我一条一条地分析进展:

顺利毕业

阅读全文 »

最近使用我心爱的Niz Plum 66键盘时遇到一个奇怪的bug。
在蓝牙模式下,左option键失灵。因为我hammerspoon和其他应用的快捷键大量使用,虽然偶尔可以通过右option键短暂替代。但总不是回事儿,工作效率大幅降低。

这个bug的引入我也不确定是如何来的。大概是我Mac开始连2个外界显示器开始的。
奇怪的是,有线模式并没有问题。而且我试过蓝牙断开重连也并没有修复。换个蓝牙通道也无济于事。

我在网络上进行了大量的搜索,并没有找到类似的问题和解决方案。最终还是在自己的不断摸索下成功修复了。因此记录下来,以防止未来再次遇到。

参考说明书.

  1. 恢复出厂设置: 同时按住键盘四角的四个键5秒钟。
  2. 键盘开机,连接Mac。
  3. 重新配置键盘设置, 如我的如下:
    • Fn + Command 从默认的Windows键位切换回Mac
    • Fn + ] 降低按键延迟
    • Fn + 右Shift 将右shift转成shift而非默认的 Up
  4. 左Option键已成功修复。

敬请享受自己的键盘吧!

阅读全文 »

Rank Name Score Finish Time Q1 (2) Q2 (4) Q3 (6) Q4 (7) Q5 (8) Q6(9)
81 / 1363 爸爸去哪儿 19/37 1:07:44 0:03:40 by 爸 0:21:39 by 爸 0:53:13 by 宝 1:02:44 🐞 1 by 爸 null null

今年秋季赛只参加了团队赛,没有参加个人赛。春季赛和赖叔以及羡慕哥组队,效果不是很理想。秋季赛和宝宝二人组队,效果反而不错。尤其是宝宝不仅没有拖慢我的速度,还给团队做出了重要的贡献。没有她顺利地做出Q3,我们队排名绝对没有现在这么好看。
一个小时做了4题后,后两题只有5人AC。看了半天后并没有任何符合时间复杂度的思路。果断放弃了,后2个小时就节约下来干别的去了。

虽然我现在用英文博客写周赛总结了。但因为春季赛和秋季赛都是国区力扣的活动,只有中国人能参加和看到,因此考虑到受众,本次比赛总结还是用中文吧。

LCP 44. 开幕式焰火

签到题。DFS,用set记录不同color.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int numColor(TreeNode* root) {
set<int> colors;
function<void(TreeNode*)> dfs = [&](TreeNode* root) -> void {
if (root) {
colors.insert(root->val);
dfs(root->left);
dfs(root->right);
}
};
dfs(root);
return colors.size();
}
};

时间复杂度: O(N),
空间复杂度: O(N).
其中,N为节点数。

LCP 45. 自行车炫技赛场

DFS. 因为需要关注高度,因此把高度也当作参数传入。
需要用seen/visit记录访问过的状态。
因为速度变化的机制h1-h2-o2,显然速度不可能超过最大高度+1,因此状态数也是有限的,大概是n\*m\*最大高度 = 10^6.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution:
def bicycleYard(self, position: List[int], terrain: List[List[int]], obstacle: List[List[int]]) -> List[List[int]]:
n = len(terrain)
m = len(terrain[0])
minSpeed = [[float('inf')] * m for _ in range(n)]
direction = ((1, 0), (0, 1), (0, -1), (-1, 0))
seen = set()
def dfs(i, j, speed):
if speed <= 0: return
if (i, j, speed) in seen: return
seen.add((i, j, speed))
minSpeed[i][j] = min(minSpeed[i][j], speed)
for di, dj in direction:
ni = i + di
nj = j + dj
if ni < n and ni >= 0 and nj >= 0 and nj < m:
newSpeed = speed + terrain[i][j] - terrain[ni][nj] - obstacle[ni][nj]
if (ni, nj, newSpeed) not in seen:
dfs(ni, nj, newSpeed)

dfs(position[0], position[1], 1)
minSpeed[position[0]][position[1]] = float('inf')
ans = []
for i in range(n):
for j in range(m):
if minSpeed[i][j] == 1:
ans.append([i, j])
return ans
阅读全文 »

自从来到亚马逊工作,接触英文和外国同事比较多。锻炼使用英语的需求越来越大。而且为了和国际接轨,我决定创建自己的英文博客。

步骤

以中文博客为模版,创建英文博客。

1
cp -r Hexo HexoEn
阅读全文 »

Rank Name Score Finish Time Q1 (3) Q2 (4) Q3 (5) Q4 (6)
222 / 12542 YoungForest 18 1:32:31 0:06:21 🐞1 0:12:18 0:24:28 1:17:31 🐞2

久违的不用打卡了。之前打了3周卡,实在是遭不住了呀。工作之后,花在刷题上的精力和时间都少了很多。很多卡都是让npy打的,或者干脆抄一份。一份付出一份回报。学如逆水行舟,不进则退。我周赛成绩下降确实是自己实力下降了。虽然我并不打算改变,并且慢慢接受了这个事实。但是我会坚持打周赛和呆在残酷群里,保持基本的做题手感即可,不需要对自己有太高要求。

最近除了工作,花了很多时间在投资理财上。

一方面学习相关知识。比如 关注了 喜欢玩基金的小瑜哥 的B站和微信公众号,还有 认真的天马 的B站和微信公众号。
关注了有大半年时间了。小瑜哥妥妥的韭菜一枚,关注他有3点原因:他每日更新复盘视频,十分坚持和勤劳;视频内容很开心(准确地说,看他亏钱很开心),可以当作娱乐区UP看;他犯了很多韭菜的误区和大忌,我们可以从他的失败中学习教训,而不需要自己去失败。
天马 是妥妥的知识型和保守型UP主,比较符合我的需求和观点。他微信公众号也是日更,每天早上8点准时更新。更新文章末尾有估值表,通过其可以买低估、卖高估。他的文章和视频也是以干货为主,值得反复学习和观看。
同时关注了 YouTube 的 “NaNa说美股“。主要讲的都是美股大盘的变动。我之前买过200元 纳指100 和 标普500. 涨了一些就卖了。错过了后面的行情。美股确实是长牛,和 A股没法比。现在虽然继续涨,但已经历史新高了,我也不敢再买了。
同时阅读投资书籍。之前读了《小狗钱钱》,最近读完了《小乌龟的投资智慧》《股票大作手回忆录》。我在豆瓣均写简短的书评。
其中《小乌龟》是我觉得最有用的一本书,尤其是对于长期(10年以上)的投资。打算以后准备退休钱的时候按照其投资。现在因为要准备买房出国的事儿,暂时还没有足够的长期资金。短期基本都要用。

另一方面进行实践。把自己的资产分为4个部分 灵活取用(现金,货币基金)、保守的债卷基金 和 固收(定期)、偏风险的股票基金(以宽基指数 和 行业指数 为主)。
半年前写过一个自己的投资故事,现在,我可以大胆的说我的知识和经验更加丰富和专业了。虽然并没有收益多少,但工作之后随着本金的增加,投资理财变得更加重要了。
现在我总的股票仓位较低,大概不到 1/3,以其他3种保守投资为主。

1995. Count Special Quadruplets

签到题。暴力枚举即可。不过因为着急,没仔细看题,忽略了index 递增的要求,擅自加了排序,导致WA一发。

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def countQuadruplets(self, nums: List[int]) -> int:
seen = set()
n = len(nums)
# print(nums)
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
for l in range(k + 1, n):
if nums[i] + nums[j] + nums[k] == nums[l]:
# print((i, j, k, l))
seen.add((i, j, k, l))
return len(seen)

时间复杂度: O(n^4),
空间复杂度: O(n)。

1996. The Number of Weak Characters in the Game

阅读全文 »

Rank Name Score Finish Time Q1 (3) Q2 (4) Q3 (6) Q4 (6)
406 / 11837 YoungForest 12 0:36:07 0:01:21 0:09:54 0:26:07 🐞2 null

本周Q4极其难,思考了半个小时果断放弃,陪npy做可乐鸡翅去了。
有趣的是,LC国服赛后挂了。取不到成绩,残酷榜默认0分。心疼国服的同学们。
虽然之后恢复了,我上面的成绩就是恢复之后,加上国服的同学后的排名。
因为今天其实有Google Kickstart比赛,因此参赛人数有所减少。

1979. Find Greatest Common Divisor of Array

签到题。用C简直作弊,有自带的gcd函数,虽然是C 17才支持的,不过LeetCode恰好支持17.

1
2
3
4
5
6
7
8
9
class Solution {
public:
int findGCD(vector<int>& nums) {
sort(nums.begin(), nums.end());
const int smallest = *nums.begin();
const int largest = *nums.rbegin();
return gcd(largest, smallest);
}
};

时间复杂度: O(n log n + log max(nums)),
空间复杂度: O(1).

gcd 的时间复杂度: link.

1980. Find Unique Binary String

由于n的大小很小,因此直接暴力即可。
数字转二进制字符串,和 二进制字符串转数字 都是网上现搜的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
string findDifferentBinaryString(vector<string>& nums) {
// total number: 2 ^ n,
// 2 ^ 16 = 65536
const int n = nums.size();
unordered_set<int> seen;
for (const auto& i : nums) {
seen.insert(stoi(i, 0, 2));
}
for (int i = 0; i < (1 << n); ++i) {
if (seen.find(i) == seen.end()) {
return std::bitset<16>(i).to_string().substr(16 - n);
}
}
return "";
}
};
阅读全文 »

Rank Name Score Finish Time Q1 (3) Q2 (4) Q3 (6) Q4 (6)
616 / 13755 YoungForest 18 1:28:25 0:03:14 0:08:43 0:37:17 🐞4 1:03:25 🐞1

一不小心,周赛博客又鸽了3周。虽然我一直在参加周赛,但赛后经常忘记总结和复盘。平日里对刷题也放松了练习。平时打卡不是让npy刷,就是抄之前的提交。毕竟自己做了1300+的题,经常出的题都是我做过的。
主要还是工作后生活丰富了许多,刷题和周赛的优先级降低不少。多场双周赛我都鸽了,快活的诱惑太大了。

1967. Number of Strings That Appear as Substrings in Word

签到题。字符串问题用Python So easy。可惜我Q3没有坚持用Python,否则这周免打卡也是极有可能的。距500名差10min。

1
2
3
4
5
6
7
class Solution:
def numOfStrings(self, patterns: List[str], word: str) -> int:
ans = 0
for s in patterns:
if s in word:
ans += 1
return ans

时间复杂度: O(sum(patterns[i].length * word.length)),
空间复杂度: O(1).

1968. Array With Elements Not Equal to Average of Neighbors

贪心。这道题答案并不唯一,但我看到大多数人的思路和我一样。
即 大 小 间隔插,保证2侧的数都大于/小于中间的数。自然可以保证平均数也大于/小于中间的数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
vector<int> rearrangeArray(vector<int>& nums) {
sort(nums.begin(), nums.end());
const int n = nums.size();
int l = 0, r = n - 1;
vector<int> ans(n);
for (int i = 0; l <= r; i += 2) {
ans[i] = nums[l++];
if (l <= r)
ans[i+1] = nums[r--];
}
return ans;
}
};

时间复杂度: O(n log n),
空间复杂度: O(n).

阅读全文 »
0%