Friday, December 11, 2020

Clare Zhao: First two years to be a Microsoft program project

 Here is the link. 

北美产品经理3 - 入职初期犯过的哭笑不得的错误 | 两年后回头看自己,究竟成长在哪里 |职场小白成长记


你好 欢迎来到我的频道。 我是西雅图的互联网圈的产品经理一枚,喜欢钢管舞,健身,写小说,以及和闺蜜们吃喝玩乐。梦想是将我心中决定的有趣的故事,讲给每一个人听。 想用这个频道来记录自己的生活,定期更新,如果喜欢的话请订阅 转发 收藏我的视频和频道, 谢谢么么哒。 关于本期视频:和产品经理有关的介绍第三集!因为产品经理在英文中是PRODUCT MANAGER,所以下文均用PM来代指。 第一期视频链接:https://www.youtube.com/watch?v=pjXGn... 第二期视频链接:https://www.youtube.com/watch?v=9_OmT... 本期视频详情: 00:39 入职三个月,我做过的一些傻事 09:26 没有自信是正常的,大家都是这么过来的,会好的 10:25 回头看两年前的自己,大概有6点改变,想跟大家分享

1.要努力去熟悉产品 2.要主动去问问题 3.不会因为这件事不会,就等别人来push自己,要真的很主动,不怕挑战 4.Enjoy life

Growth mind - a good learner - how to be a good manager - personal branding - which area to grow?

Product owner - UX designer, one area

Growth mindset - It is hard working. Five years to be promoted to be senior. Work and life balance - it takes some time to get god at something.

Have your own life.
More comfortable to make a small talk - how to talk and what to talk, and ...

Yuanyuan Sun: 别让野心配不上才华 Your talents deserve greater ambition

 Here is the link. 

处处是矛盾的世界里,谁也不能窥得全貌。正如我们旁观着这个时代的伟大,却似乎永远无法真正地属于它。惯性正推着每一个人向前走,力量或轻或重,步伐又浅又深。带着突破边界的原动力,她创立了"圈外同学",成为36Kr和Linkedin的专栏作者,试图连接这个时代里每一个孤立的节点。她呼吁你丢掉惯性,直面内心的欲望。与欲望共处,才是突破自我认识世界的方式。建立属于自己的秩序,或许正从直面既定的秩序开始。--她是孙圈圈,圈外商学院创始人,领英有洞察专栏作家。在这个演讲中,圈圈反常识的说在别人都在为自己知识焦虑的时候,问问自己,是不是当初的梦想和野心还能配的上我们的才华。不是你不行,而是你可能迷失了自我,如何找到自己内心的那团火,圈圈在演讲中也给出了答案。 不要让你的野心配不上你的才华 处处是矛盾的世界里,谁也不能窥得全貌。正如我们旁观着这个时代的伟大,却似乎永远无法真正地属于它。 惯性正推着每一个人向前走,力量或轻或重,步伐又浅又深。 带着突破边界的原动力,她创立了"圈外同学",成为36Kr和Linkedin的专栏作者,试图连接这个时代里每一个孤立的节点。 她呼吁你丢掉惯性,直面内心的欲望。与欲望共处,才是突破自我认识世界的方式。 建立属于自己的秩序,或许正从直面既定的秩序开始。 --她是孙圈圈,圈外商学院创始人,领英有洞察专栏作家 This talk was given at a TEDx event using the TED conference format but independently organized by a local community. Learn more at https://www.ted.com/tedx


孙玲 Sun Ling: How I got to Google from being a factory worker工厂流水线工人到纽约“高薪”程序员

Here is the link. 

Most people think that people who work in Google are elites and graduates from top universities. However Sun Ling's story tells us that even a factory girl who was forced to drop out of school at the age of 12 can make a leap in her life step by step,and finally got to a place where she is now working for Google in New York . 大部分人都会觉得在谷歌工作的基本都是名校毕业生或行业大牛。而孙玲则告诉我们哪怕是一个12岁就被迫辍学的工厂女工,也能一步步实现人生的跳跃。 Sun Ling is called "Inspiring Influencer" by media. Born and raised in a small village in Loudi, Hunan Province, she was forced to drop out of junior high school at the age of 12. She failed in college entrance examination at the age of 19, and worked as a barber apprentice and in a assembly line. Realizing that she needed to change at the age of 20. After 10 years of unremitting efforts, she finally got where she is right now-- a programer working at Google. 媒体称孙玲为“励志网红”,出生成长于湖南娄底一个小村镇的她,12岁经历初中被迫辍学、19岁高考失利,当过理发学徒、工厂流水线生产女工。

在意识到需要改变自己的20岁,她用全部家当自主学习完成软件编程、掌握英语能力,在10年时间的不懈努力之下,她成功申请到美国留学,现作为程序员在美国Google工作。 This talk was given at a TEDx event using the TED conference format but independently organized by a local community. Learn more at https://www.ted.com/tedx

三大能力 3 key abilities 1-自學能力 self-learning 2-接受反饋速度快 adability and ability to respond fast 3-釐清問題的能力 ability to clarify questions : 搞清問題, 解決問題 未能知道自己最終目標, 但清楚了解當下不想要什麼。 只要去行動,利用現有資源,去抓住機會。解決當下問題,去成長。 夢想還是要有的, 萬一實現了呢

HSE.TO: Lessons I learn from day trader to short term investor

 Dec. 11, 2020

Introduction

It is hard for me to describe the feeling of controlling my emotions and experience to play volatile stock market since coronavirus. I like to talk and share my HSE.TO portfolio and things I wish that I can stay as a better investor. 

Final result


From Sept. 24 to Dec. 11, 2020, there is 99% gains. I did not make money on HSE.TO, but I still lost near $2000 on HSE.TO. What happened?

My experience

I will add more analysis later. 


Thursday, December 10, 2020

Clare Zhao: How I turned into a great project manager at Microsoft?

 Here is the link. 

北美产品经理1 - 应届毕业直接在大科技公司做PM是一种怎样的体验?年薪百万?必须高颜值?PM和程序员如何相处,相爱相杀?PM的一天是什么样子的?


你好 欢迎来到我的频道。 我是西雅图的互联网圈的产品经理一枚,喜欢钢管舞,健身,写小说,以及和闺蜜们吃喝玩乐。梦想是将我心中决定的有趣的故事,讲给每一个人听。 想用这个频道来记录自己的生活,定期更新,如果喜欢的话请订阅 转发 收藏我的视频和频道, 谢谢么么哒。 关于本期视频:和产品经理有关的介绍第一集!因为产品经理在英文中是PRODUCT MANAGER,所以下文均用PM来代指。 00:49 PM有哪几种分类, 不同分类之间的职责有何不同? 02:16我为什么想做一个产品经理?转专业(?没有一个专业是教PM的,所以大致算转专业吧)的原因 05:28 为什么说留学生(CS相关专业)想找PM的工作比较难 07:28 SDE or PM, it is a hard choice. 08:53 PM的工作内容是怎样的,typical day是什么样子的? 11:40 PM 和SDE 的关系如何?相爱相杀吗?工作会对骂或者大打出手吗? 15:12 PM的薪水如何,与SDE相比是挣得更多还是少? 17:20 PM 加班多吗,996吗? 18:20 工作中的男女比例如何? 19:23 PM 对颜值有要求吗? (这大概是个骗点击量的问题) 19:50 PM工作有着装要求吗? 22:14 同事好相处吗,会不会有政治斗争? 24:42 PM面试是什么样的?都有什么问题


1.PM有几种种类: User Experience PM(跟用户打交道多,user pain point) Technical PM(偏技术实现) User Growth PM(偏marketing和运营) Project PM(定项目timeline,统筹规划) 2.PM最重要的一点 如何挖掘和理解user pain point 3.PM的一天 写feature spec feature design(what is the gap,what is user pain point and waht is the proposed soution) 开会,convince dev teams,make sure everybody is on the same page 定schedule and timeline 4.提一个需求要经过很多论证 what is the user pain point? why? what is the business value? 5.unblock my dev 解决工程师遇到的问题,多跟他们交流 I should be able to help you with everything it is my top priority to help unblock you 6.PM面试 behavior question(why you are a good pm?) product design past Experience estimation and strategy question

Flora Journey: How Cecilia found a PM job in Recession|如何在经济萧条期找到产品经理的工作

Here is the link. 

 

I had an interview with my friend Cecilia to talk about how she found her first PM job in the last recession without a technical degree.

1. What is a day like as a lead pm at Checkr. 1:05 2. How did you transfer in tech from education to product manager? 1.48 3. Graduating into the recession. 4:48 4. How did product management found you? 5:44 5. Cold email suggestion. 6:49 6. What you were thinking when cold-emailing CEOs. 7:34 7. Do you need to know how to code? 9:42 8. How to lead without authority. 11:06 9. Why are you always so busy. 13:46

Flora Journey: 跟苹果发布会WWDC学做presentation简报|拆解App Clips部分presentation框架结构

 Here is the link. 

做这个video的缘起主要是朋友们在准备面试的时候总是苦恼要怎么说,好像有一堆内容都想要一股脑说出来,但是其实这个不太现实,而且听众并不好消化。 上月苹果开了一年一度的wwdc,他家的presentation真的做得好,我就想拿出一个小片段来分析一下,他们怎么做的。 我大概有分析以下几点: 整体框架 主要特点,每段选择主题的意图 分析目标观众 用时,节奏 转折


Michelle Lu: 谷歌分析师

 Linkedin profile: 

How to become a Google Analyst from a consultant|如何准备谷歌分析师的面试

https://www.linkedin.com/in/michellelu827/

Google analyst: How to become a Google Analyst from a consultant 如何准备谷歌分析师的面试

 Here is the link. 


1. FROM CONSULTANT TO ANALYST 0:30 2. WHAT DOES A PEOPLE ANALYST DO? 2:46 3. FINDING A PEOPLE ANALYST ROLE 3:3 4. MAKING YOUR RESUME STAND OUT FOR GOOGLE 4:42 5. SEEKING MENTORS 6:19 1. SCHOOLMATES 2. WORK RELATIONSHIPS 3. LINKEDIN OUTREACH 6. TIPS FOR REACHING OUT TO MENTORS 7:09 1. HOW TO REACH OUT TO Michelle

7. PREPARING FOR AN INTERVIEW 9:0

1. BEHAVIORAL EXAMPLES 1. LEADING A TEAM 2. INTERACTING WITH CLIENTS 3. RESOLVING CONFLICTS 2. CASE STUDIES 3. TECHNICAL QUESTIONS 8. EXAMPLE OF RESOLVING A CONFLICT 10:00 9. CASE STUDIES 11:30 1. COST BENEFIT ANALYSIS 2. MARKET PENETRATION 3. MARKETING FRAMEWORK FOR MARKETING STRATEGY 10. TECHNICAL PORTION 13:50 11. HOW MUCH PREPARATION IS ENOUGH? 14:43

Google: 台灣和美國工作大不同! Google公司的面試大補帖?!

 Here is the link. 

訪問在Google總部的台灣人看看他們對美國和台灣工作有什麼感想.

360 degree evaluation - feedback from different cross-department teams

committee - feedback - Do not know who you will interview, keep curiosity, and also industry information - helpful.



BitTiger: Google招聘官解答求职者“经典十问”

 Here is the link. 

Follow-up question - Prepare for follow-up algorithm when I answer the first algorithm. 

How to control my emotion? Stay calm - so many ways to go wrong - how to fix it? 

问题1: thank letter该不该写?什么时候写? 问题2:面试期间为什么会有冷冻期?冷冻期必须是一年吗? 问题3:面试官通常如何对待态度不好的面试者? 问题4:为什么面试官不给我feedback?我该怎么提升?



Coolest Office Ever? (Google Office Tour) - Hype Hunt: EP18

 Here is the link. 

Google is known for their amazing offices around the world, so Jem & Roz check out their Asia-Pacific HQ in Singapore to see if it's worth the hype! Jem's Instagram https://instagram.com/jemmawei Roz's Instagram https://instagram.com/rozpho Get the Clicknetwork app to watch all our videos 1 MONTH before they hit YouTube! http://qrop.it/il6t4f

Wednesday, December 9, 2020

Real Talk with Google Software Engineer

 Here is the link. 

Get work done - process is slow - what to learn, what to do - a lot of talk, workshop

After one year full time, what is long term goal? 

Junior developer, learn different technologies. Later a few years, design things with a big scale. 

Favorite part is the culture. Everyone is super respectful. There are so many channels to voice your concerns and get your help. 

Two intern experience - Google vs Altera acquired by Intel. 

People move around a lot. 

Talk to managers - ask feedback, and just check progress and compared to others......

If you do that way, you will have objective ways to measure how good you are. Pretty sure that progress is making. 

Being female, mostly positive. Everyone is very supportive, and environment is very ......

Classmate said that you were a girl to get google intern. Advice for other woman to join, mentorship, give your advice, and go through something difficult. People you look up to, ask them advice, and get some coffee. 

Anyone needs some one to talk to. Feel community to talk to . 

General advice to get into software community:

Take time to improve your skills. Cracking code review, and learn data structure in general. Get every chance you can get. 



Tuesday, December 8, 2020

Leetcode discuss: 715. Range Module

 Here is the link. 

First practice - C# - study and learn - copy ideas

Dec. 7, 2020
Introduction
It is hard for me to find time to work on my own practice. I have to go over 30 hard level algorithms based on Leetcode premium.

Learn from a competitive player
It is easy for me to practice the algorithm by rewriting a C# solution to fit my own need. I chose to study the code here.

Time complexity
Let K be the number of elements in ranges.
addRange and removeRange operations have O(K) complexity. queryRange has O(logK) complexity, if using binary search. But my approach is O(K).

Because addRange, removeRange adds at most 1 interval at a time, you can bound these further. For example, if there are A addRange, R removeRange, and Q queryRange number of operations respectively, we can express our complexity as O((A+R)^2 Q log(A+R)).

Space Complexity: O(A+R), the space used by ranges.

public class RangeModule {

    private List<int[]> intervals;
    
    public RangeModule() 
    {
        intervals = new List<int[]>();
    }
    
    /// AddRange - 
    /// first just add interval to the list;
    /// next sort the range by  start value. 
    /// merge intervals - overlap / non-overlap 
    public void AddRange(int left, int right)
    {
        intervals.Add(new int[] {left, right});
        
        // sort by start value - O(nlogn) - time complexity        
        intervals.Sort((x, y) => x[0].CompareTo(y[0]));
        
        int start = intervals[0][0];
        int end   = intervals[0][1];
        
        var temp = new List<int[]>();
        for(int i = 1; i < intervals.Count; i++)
        {
            int nextStart = intervals[i][0];
            int nextEnd   = intervals[i][1];
            
            // no overlap 
            if(nextStart > end)
            {
                temp.Add(new int[] {start, end});
                
                // next iteration
                start = nextStart; 
                end = nextEnd;
            }
            else
            {   // update first interval end value - leave merge for future
                end = Math.Max(end, nextEnd);
            }
        }
        
        temp.Add(new int[] {start, end});
        intervals = temp;
    }
    
    /// make sure that [left, right] is inside one of the intervals
    public bool QueryRange(int left, int right) 
    {
        for(int i = 0; i < intervals.Count; i++)
        {
            var start = intervals[i][0];
            var end   = intervals[i][1];
            
            if(IsOverlap(start, end, left, right))
            {
                int l = Math.Max(start, left);
                int r = Math.Min(end, right);
                
                if(l == left && r == right)
                {
                    return true;
                }
            }
        }
        
        return false;
    }
    
    public void RemoveRange(int left, int right) 
    {
        var temp = new List<int[]>();
        for(int i = 0; i < intervals.Count; i++)
        {
            int start = intervals[i][0];
            var end   = intervals[i][1];
            
            if(IsOverlap(start, end, left, right))
            {
                int l = Math.Max(start, left);
                int r = Math.Min(end, right);
                
                // 0, 1, 2 intervals three choices 
                if(l > start)
                {
                    temp.Add(new int[] {start, l});
                }
                
                if(r < end)
                {
                    temp.Add(new int[] {r, end});
                }
            }
            else 
            {
                temp.Add(new int[] {start, end});
            }
        }
        
        intervals = temp;
    }
    
    /// checking is to check if it is not overlapped
    /// either [start1, end1] is left side of [start2, end2], or right side of [start2, end2]
    private bool IsOverlap(int start1, int end1, int start2, int end2)
    {
        return !(start2 >= end1 || start1 >= end2);
    }
}

/**
 * Your RangeModule object will be instantiated and called as such:
 * RangeModule obj = new RangeModule();
 * obj.AddRange(left,right);
 * bool param_2 = obj.QueryRange(left,right);
 * obj.RemoveRange(left,right);
 */

Leetcode discuss: 552. Student Attendance Record II

 Here is the link. 

First practice - C# - 30 hard level - DP

Dec. 7, 2020
Introduction
It is my one day project to work on 30 hard level algorithms based on Leetcode premium, Google, hard level.

DP - learning
I thought about using dynamic programming, and I need to learn how to find three states, length of sequence, total number of 'A', continuous 'L'.

I just came cross this solution shared here, and I wrote my own using C#.

30 Hard level algorithms
I am planning to study those 30 algorithms in a day to prepare for my onsite interview.

Top 10 are the following:

  • 727 Minimum windows subsequence - DP, sliding window
  • 715 Range Modulde, Segment tree, ordered map
  • 552 Student attendance record II, DP
  • 465 Optimal accont balancing
  • 1499 Max value of equation, Array, sliding window
  • 753 Cracking the safe, math, DFS
  • 1231 Divide Chocolate, Binary search, greedy
  • 308 Range sum query 2D - Mutable, Binary indexed tree, segment tree
  • 1293 Shortest path in a grid with obstacles elimination
  • 1444 Number of ways of cutting a pizza, DP
public class Solution {
    public int CheckRecord(int n) {
        var cache = new int[n+1, 2, 3];
        
        for(int row = 0; row < n + 1; row++)
        {
            for(int col = 0; col < 2; col++)
            {
                for(int L = 0; L < 3; L++)
                {
                    cache[row, col, L] = -1; 
                }
            }
        }
        
        return helper(n, 0, 0, cache);
    }

    // Returns the number of ways to create a string of 
    // length n with characters 'A', 'L', 'P' 
    // while having <= 1 total 'A's and <= 2 consecutive 'L's.
    // n = 1, return 3 'A' or 'P' or 'L'
    private int helper(int n, int totalA, int continuousL, int[,,] cache) 
    {
        int mod = 1000 * 1000 * 1000 + 7;
        // base case - 1, 
        if (n == 0)
        {
            return 1;
        }
        
        if (cache[n, totalA, continuousL] != -1)
        {
            return cache[n, totalA, continuousL];
        }
    
        int result = 0;
        
        if (totalA == 0) {
            // add 'A', reset continuousL = 0
            // n -> n - 1
            result += helper(n - 1, totalA + 1, 0, cache);              // Choose 'A'
            result %= mod;
        }
    
        if (continuousL < 2) {
            // add 'L', continuousL++
            // totalA - no change 
            result += helper(n - 1, totalA, continuousL + 1, cache);    // Choose 'L'
            result %= mod;
        }
    
        // add 'P'
        // reset continuousL = 0
        // totalA - no change 
        result += helper(n - 1, totalA, 0, cache);                      // Choose 'P'
        
        result %= mod;
        
        // memoization - save to cache
        cache[n, totalA, continuousL] = result;
        
        return result;
    }
}