找工作到现在已经不太想去计算时间了,也不想说找工作体力跟脑力怎么怎么累了,因为感觉这么长时间了,自己的进步很小,除了多见了几道题,但是coding的能力极弱无比,前段时间一直在做leetcode,感觉自己coding能力提高了一些,但是最近因为觉得老是刷lc,对于新的题目没有新的思路,就把重点放在了思路上面,忽视了coding,导致题目有思路但是coding出来很费劲,或者是很多bug,这也是我现在的很困扰自己的一个大问题。也是,我又觉得要每天开始刷一刷lc来保持coding的感觉了,但是每天的思路也还是要继续看,继续训练。最近有一些面试,也有自己很想要去的公司,发现了问题,我感觉什么时候开始改正都不算晚,从今天开始每天花时间刷lc了,一天20道题吧。 coding能力实在太弱。同样也要每天好好思考总结锻炼思路。
跟面试官交流也是很重要的,不管什么情况下,要先把自己的思路现在是在怎么想的跟面试官交流,如果思路是错的,面试官会跟你交流,不要太紧张,把自己能想到的,想说的,想问的都跟面试官交流,其他的就是技术能力问题了,还有做题之前,要跟面试官要example,这样能够给自己多一些的思考时间,碰到原题的话也能给自己多一些时间再整理一遍思路,以及怎么去code,有了思路之后,对于某一类的问题,要跟面试官写下这一类问题主要是从哪几个方面去考虑,关键有哪几个点,比如:binary search 关键的就是boundary, mid comparison, while condition, post processing if necessary; dp 关键的就是state, function, answer, base case, optimization; dfs关键的就是 expand rule, recursion base case, set visited, mark visited I, II, III对于tree的dfs,可以把tree画下来,找到expand rule; bfs 关键是expand rule, set visited, bfs 解决问题没有dfs解决问题范围广,但是二者都能对整个树或者整个图进行遍历,dfs能够解决brute force的问题,但是bfs不行,bfs能解决 shortest path 的问题,时间比dfs brute force的时间要快; tree的问题,关键是首先确定用bottom-up 还是 up-bottom 的recursion类型,bottom-up的话解决的问题更为广泛,解题时要记得3步法,up-bottom一般重在解决与parent node 有关或者path要从root开始的问题;graph 的问题, dfs / bfs/topological sort; 还有一些数据结构的应用,在一些综合设计类问题里面,比如LRU CACHE, deque, stack, hash map, heap, 这些,还有一些数据结构的组合使用等。 还有比如说有些问题里面 binary tree跟 array其实是想通的,把binary tree 利用 preoder的顺序遍历其实遍历出来就是一个array,有些在array里面的问题的算法在binary tree里面也同时适用,有时候看问题换个角度换个思路可能会有新的发现;
算法题搞了这么久,技术还是很差,多多总结,多多思考,扩宽思路,发现每次mock interview或者每次电面之后做错的题目才是印象最深的,但是这些机会都很少,也不能把每次电面都当作学习的机会吧,平时可以自己把一些题目当作interview的题目,自己给自己mock,看看问题出在哪里,这样岂不是有更多的机会mock。
对于算法题,继续加油吧。。期待自己的提高,也不想让老师失望,自己失望。
No comments:
Post a Comment