KimiZ님의 프로필SEIZE THE DAY사진블로그리스트기타 ![]() | 도움말 |
|
11월 24일 特殊链表的拷贝--一道面试题面IBM时候被问到,死在这道题上了。标记一下。 struct node { int data; struct node * next; struct node * random; }; 本题来源是ms的一道面试题,要求是将一条有特殊结构的链表进行复制,链表的结构如上,除了正常的2个域之外,多了一个random,它代表一个指向链表 上某一任意节点的指针,要求将该链表复制。如图,其中实线表示next域,虚线表示random域。 ![]() 难点分析:本题最难的部分就在于如何将random域完好无损的完全拷贝复制到新的链表之上,对于普通链表一个while循环拷贝就可以搞定,但是这里似乎不可行。 突破点:如何保存或记录random域可以作为一个思考的参考点,下面提供2种解法: 1. hash缓存: 我们可以定义一个hash表,key为被拷贝链表中Node的地址,value为新的拷贝链表中Node的值。下面将在伪代码中进一步说明 伪代码如下: struct node * old_list; struct node * new_list; hash ht; while( old_list != NULL ) { if( ht.get(old_list) == NULL ) // 当前节点没有被复制过,则拷贝节点,同时将原节点的地址作为key,插入hash表 { new_node = copy(*old_list); ht.set(old_list, new_node); } else // 已经存在则直接将该节点读出 { new_node = ht.get(old_list); } // 并将新复制的节点插入链表 insert(new_list, new_node); if( ht.get(old_list->random) == NULL ) // 如果ht的random不存在,那么产生一个random node,并放入hash表 { random_node = copy(*(old_list->random)); ht.set(old_list->ramdon,random_node); } else //否则从hash表中读出random { random_node = ht.get(old_list->random); } // 将random域进行填充 new_node->random = random_node; } 这样可以看出,因为地址值是唯一存在的,所以Hash函数的设计可以保证每个节点的值都会被一一映射,并且由于每一个节点都只会被复制一次,并且在代码的遍历过程中就已经完全复制好,空间复杂度为O(n),时间复杂度为O(n) 2. 用一个图的方法看的比较清楚,首先在遍历原来链表的过程中,插入新的节点,比如A_N是copy(A_O)的,同时将A_N->next = A_O->next; A_O->next = A_N;通过一个遍历,我们就可以将链表复制成图中的样子。在完成next域的链接后,需要开始做random域的复制。 ![]() 在实现了next的结构之后,我们需要开始对new_list的random域和next域进行赋值。 那么有: A_N->random = A_O->random->next; 入图所示:A_O->random为C_O,C_O的next为C_N,这样A_N->random = C_N; 对于 A_N->next = A_N->next->next;即B_N; 该算法复杂度为O(N),空间复杂度为O(1),除了新拷贝的空间之外没有额外地址; 10월 17일 人情世故36条 人情世故36条 1、即使不是对大人物,我们也要用请教的态度口吻而不是傲慢的姿态与他们说话,因为人不可貌相,很多实用的良师益友往往来自不起眼的生活与工作中。 2、在吃饭的场合做主动点菜者,不适合请主人与主宾点菜,因为那不是尊贵者通常做的事情,但是请注意询问他们的喜好,而不是只管点自己爱吃的东西。但是这需要平时研究菜单,积累点菜的经验。上桌的时候要尊重主人的安排,不要贸然先行入席。 3、经常找到朋友、伙伴与同事(甚至小孩子)值得肯定的方面,注意哦,即使老板也需要被你肯定,但是对上者的赞扬应尽量在私下场合,而对于一般朋友与同事则应公开赞扬。 4、在受到别人对自己的相貌、事情、人品赞扬时,不要表现出理所当然的样子,也不要假意否认,合适的方式是表示感谢,尤其感谢朋友的肯定与支持。 5、学会使用便条,包括借条、领条、请假条、申请信,如果你很主动地使用这些便条会让其他人感到你很规范,而且如果你懂得请其他人这样做,你未来就能更好与他们有凭有据地打交道。会写便条会让别人刮目相看。 6、即使你不是服务人员,在朋友或者同事有客人来的时候主动倒水,会让朋友与同事很有面子,也会让客人觉得你的朋友与同事很有威望。这会让你的朋友与同事特别感谢你的姿态。 7、虽然你觉得你是新手或者地位比较低的人,但是你要勇于不耻下问,也要做到主动询问别人的需要,而不要等领导或者资深的同事对你表现出亲和,因为他们这样表现往往需要特别的努力。 8、记得在别人不在座位的时候很热情地帮助接听与记录电话、接受信件、传递信息,对团队的同事与同学,提醒他们一些你知道的重要日程。 9、在征询了别人意见之后才进入别人的房间,阅览别人的书架或者室内物品,在经别人同意的情况下才用别人的电脑,坐在别人的私人座位上,但通常不去翻动别人的笔记本。 10、出席别人的活动需要有邀请,如果不能出席应提前通知,迟到的话要在适当的时间点上通知主人,到了以后要解释,带未经邀请的朋友要事前通知主人。 11、不适合向别人索要礼物,收到别人的礼品不管是不是喜欢要表示感谢,因为送礼者会很在乎你的反应,不适合把一处的礼物转送给另一处,尤其还保留原来送礼者的符号与痕迹就显得很没有礼貌了。 12、在有多个出席者的场合,主动介绍自己的朋友给其他人,或者主动在你认识的朋友之间穿针引线。那些被缓解了陌生感的朋友会特别感谢你。 13、有不同地位的朋友在的场合,都要保持微笑,体贴地招呼下那些内向的、不为人注意的、可 能有点自卑感的朋友,在社交中对弱势者的帮助会得到别人特别的感激。对于社会地位较低者,尤其在有你不能适应的生活条件与生活习惯时,要克制自己所想表现 出的不适感与负面表情,尽量主动先打招呼。 14、有好东西吃的时候不要吃独食,主动地告诉他们你知道的好消息,在有好事情的时候能想到别人会让别人觉得你把他们当好朋友。 15、有人做错了事,不要用情绪性的方式加以批评,尤其要注意就事论事,避免评价了别人的人 格、个性与家庭教养。批评时能提出解决方案就更有建设性。批评时应不忘肯定别人的长处。如批评时能较幽默,往往负面效果就更少。被批评或者遇到尴尬的时候 能幽默自嘲,也能提高交流的建设性。 16、好汉不吃眼前亏。但是在另外很多时候,如果问题争执不下,也不要继续火上浇油,冷静下来,多收集一些数据材料与想得更明白点再说。 17、在你不能有充分把握的时候,用“争取”与“尽量”这样的口吻回答别人的邀约,承诺了就要最大限度去履行。诺言是指100%做到的事情。如果你有了三次甚至更多的对同一个人没有履行诺言的记录,那个人通常就不再认真地对待你的约定,这就是所谓的信用问题。 18、虽然在商言商,但是我们要尽量不谈回报地先为别人做点什么,这样就赢得了在心理上比别人优越的债权感。一个人的社会地位是别人对他负有的社会债务感的总和。 19、为子女者应尽早学会衣被自理、帮理家务,有工作者应主动帮助办公室里不起眼的杂务; 20、为子女者或小辈者与父母、长辈、尊敬者同行不抢道,让行、让座、让茶、让食,宴席开吃请邀大家同食; 21、参加宴会、与朋友同食,不挑剔埋怨食物,不因不喜而不举筷,即使不喝酒也以茶代酒致敬; 22、向师长或他人发问、商讨或为人请教,应起立,先致意问候; 23、于人背后对他人即或不喜欢的人不说对人不好的话,严厉的意见应与当事人亲提,对人肯定的话倒可以背后说,对领导的好话宜私人对其私言; 24、说话需自律,对失意的人不说自己得意的话,不张狂高举自己的地位、子女、家里的财产,见老年人不说丧气话,多说鼓励人的话,没有建言不轻易严厉批评人,与人绝交也不必说恨话做恨事; 25、对小贩、苦力别太讨价还价,与劳力平民说话也要有廉恭之态; 26、受人接待、得人指教、获人帮忙,应致感谢信息,或邮件致意或专门找机会致谢,长者赐礼,不应推辞; 27、不当众剔牙、哈欠、伸懒腰、吐唾沫、抓身挠腮,不未经征询抽烟,不醉酒见他客; 28、正吃饭、已眠或衣衫不整时不访客或不接待访客,待客则应周正; 29、接待来客、见尊客应先伸手相握,先帮助引座落座,另有主人则应候主人安排座位; 30、对朋友,平时在无事之时就应致电、或邮件或写信问候,而不应在有事麻烦人的时候才找人; 31、远客来访,应尽量设宴招待;有客人来应备礼,受礼应还礼;到远地访问应先由本地朋友了解本地偏好与禁忌; 32、初见应请教人尊姓大名,如受人请问尊姓或贵姓,应答免贵姓x,或称免贵叫我xx好了。 33、入乡随谷,人鞠躬我躬,人作揖我揖,人问候我问,人握手我握,让人有融入切近之感; 34、称呼应见切近感,称呼到访的公司可称“我们xx公司”,而不是“你们xx公司”;称“我们在座的同事”,而非“你们的员工”;称“我们公司现在做的 xx事业”,而非“你公司做的xx业务”; 35、质疑别人应多有依据,不信口开河;虽有理,但措词应注意和缓,态度要诚恳,有求教之语;评论别人前应反思自己能否做到; 36、知道好的消息与好的道理应尽量与人分享,利益让人分沾;得人鼓励、支持、帮助应特别的感谢。 6월 11일 10 Working Tips for 20096월 8일 彼时高考“又是一年高考时,几家欢喜几家忧...” 桌面右下角弹出对儿嘎达的广告,独家推出高考答案,又让我想起了03年的那个夏天。 那是网络还没那么发达,只有几家门户有所谓的专家给出的答案,印象中没对过几门答案,只有英语对了一下,貌似正确率还可以。其他的几门,压根没有兴趣。 数学不说了,挂在这门上的兄弟姐妹们尸横遍野,自己也是遍体鳞伤。想想蛮好笑,那个当时的建洋兄还挨个打电话问候,不知道他抱的是啥心态?他是否想到在他心里要想拿高分priority no. 1的那门课成了独木桥上最大的绊脚石?可笑,可笑... 一直觉得蛮对不起辉哥的,师从辉哥多年,然而自己对物理的热情也就集中在几成熟的牛排吃起来最嫩的程度上,惭愧,惭愧。听闻辉哥已然南下创业,寄去一份祝福,望他的热情找到最适合发挥的地方。 乔小姐的化学课也是我很enjoy的。因为每次我犯了错误,乔小姐总是撇个微笑给我,未曾为难过我。现在想想,要是当时我少给她添点麻烦就好了。。。sigh~ 事后放屁,顶个屁用。 光阴如剑,岁月如梭。彼时高考,此时追忆,惘然,惘然。。。 5월 23일 Best Programer Comics5월 12일 [ZT]some info of CISCO 思科这边的BU(bussiness unit)主要分为: DCBU:data storage ,主要做存储交换机路由器,随着现代化信息量的不断膨胀,存储现在是很热门的行业。 ISBU(互联网事业部),交换机,路由器,防火墙之类,硬件诊断类职位比较多。 IPTV-BU;偏重于IPTV系统集成。 VCN-BU:虚拟内容子系统,收购的视频点播公司阿罗约,主要做用在数字电视上和IPTV上的视频点播系统。 Cable-BU:做数字电视的,有线通之类的 SMBU:做信令网关的, SS7-IP电话 IPC-BU:做IP电话的 MFG:生产部门. STB:这块是收购的亚特兰大的业务,做机顶盒。 还有专门做ASIC验证的。 对于应届生,可能开的确实不怎么高,但是纵观其他的公司,除了半导体类的公司,和个别特别牛的公司,应届硕士想开个1w/m其实并非那么容易,毕竟人家要给你很多培训。 Cisco开薪水对于有经验的人,还是比较合理的,他们会根据你具体的工作经验来给你订个level。 level 4 -- level6-- level8 ---level10----level12--level13--..... 目前在上海这边的最高级别大概是13级。 level 4 本科 2-3年 硕士1年, 10-15w level 6 本科 3-5年 硕士2-3年 15-20w level 8 本科 5-7年 硕士4-5年 20w-26w level 10 本科 7+年 硕士6+ 26w-40w 11级基本就是manager级别了40w+ 这些范围是大体的范围,不会超出太多。。具体的取值 还要看你以前的薪水参考 和你面试的成绩,当然还是要谈的 呵呵。 测试跟开发都属于研发,说测试跟研发的薪水有差别 那是大家定势思维中的偏见。 Cisco的 薪水架构是 basepay*12+ 15%住房补贴+8-10%×bonus+少许股票 =年薪 股票比例很小 意义不大。 level越高,bonus的比重越小。 给大家一些参考值 本科3年 有个测试的开了 15w 硕士2年 基本在 16-18w 硕士3年 基本在 17w-20w 。。。。。。 [ZT]从软件工程师到IT猎头:我的一点经历和感触 在做完三年的通信软件工程师之后,因为不想在技术这条路上继续走下去,但又不想到处出差,吃喝应酬,在一个朋友的推荐下做了猎头,猎头在很多人的眼里
是个神秘的职业,可能很多朋友都不知道自己怎么就突然被猎头找到了,然后经过很专业的寒暄跟客气之后,就开始职位介绍,如果这年头,您正不打算换工作,而
且又很忙,收到这样的电话可能还真烦的不得了,但如果您目前正有换工作的打算,此时听到猎头的电话,一般都会很客气的躲开您的老板,好好的跟猎头沟通一
番。 首先说一下,猎头行业是单方面收费的,绝对不向个人收取费用,仅仅收取公司费用。一般人可能会问,为什么那些公司招人不去专 门的招聘网站发布消息,偏偏要拿钱来给猎头公司让他们帮忙寻找候选人,其实这很简单,在网站发布消息同样是要收费的,这样公司也许会收取大量简历,但是有 利用价值的简历很少,尤其对于那些很高级的职位,你见过有几个manager,或者GE的角色 去上 51job,或者中华英才网的,而且很多公司比较优秀的人才很可能跳槽的动机都不是很强,只有在碰到非常有吸引力的职位时,他们才会考虑一下,另外有些职 位很难理解,并不是简单的一些编程经验,他们需要很多额外的附加条件需要猎头去理解。 所以猎头的工作简要的可以描述成:寻找合适的人才并过滤简历,在某些时候,甚至我们还需要跟候选人进行第一论电话面试。 猎头公司的客户一般都是些外企和国内的名企,当然也有一些小公司,不过就一个猎头公司的发展来看,更愿意去做那些知名企业的case,首先他们有跟猎头 合作寻找人才的意识,也比较付得起钱,猎头公司也喜欢跟这些大公司建立长期合作关系。比如像Cisco,EMC,盛大,微软这些公司都是我们公司的长期客 户。 关于猎头公司的操作收费管理,我这里不想说太多,我这里想说一下大公司的recuit的机制。 当客户给我们一个职位的时候, 我们首先分析这个职位,需要到什么公司去挖人,像那些国际知名的大企业的职位,一般我们都不会从小公司去找人,像这些大公司,一般都很拽的,我们推上去的 简历,不出名的公司他们连简历看都不看的,即使经验再匹配职位。他们宁愿offer一个贵点的同等竞争对手的人才,也不会Offer一个差一点的公司出来 的。 另外就是一个职位的匹配度问题,这些大公司特别注重经验,因为他们要根据你曾经工作过的年限来定level,这是给你offer多少钱的 一个标准,一般来说,这些大公司的业内薪水的标准都差不多,一般新公司给你offer,会参考你上个公司的的薪水,做一个 20%-40%的涨幅,一般涨幅到50%都是很难的。 我目前做的主要是技术方面的职位,包括开发,测试,mananger的职位,所以对这方面了解还是有些经验,我现在列举一下我作过的一些公司情况: Cisco(上海思科)这个公司比较拽,不过最近亚太区的业务扩张很快,着两年狂招人,估计把alcatel,lucent的人都挖的差不多了,当然 Huawei,ZTE也是他们的对手,不过huawei,ZTE的人英语相对比较差,所以过英语这关相对不是很容易,而且huawei的股票也能留住不少 人,ZTE的人都慵懒的国企感觉,猎头公司也不是很喜欢找,Cisco当然也很喜欢英特尔,IBM级别差不多类型的人才,总之最Prefer的还是有外企 大公司背景的,思科的工程师是分好几个level的,12,8,6,4根据你的工作年限来定,当然薪水级别不同,思科的薪水整体还是不错的,当然这也要看 你的能力和背景,所以你不能主观的去评判说,听说思科薪水也一般般,这种之类的话。 在软件方面,思科的职位多半都是嵌入式开发的职位,多半的 系统都是Linux,QNX,不像huawei,ZTE,alcatel都是用vxworks的,另外就是很strong的C/C++能力,一般 juion和senior的软件职位基本就是上层应用软件和底层驱动这两种。 EMC,存储业的老大,大家对这个公司可能了解不是很多,不过一 提那个史上最牛的女秘书肯定都知道了。EMC的业务其实在硬件比较多,近今年软件需求也扩张很快,目前在上海的五角场那边就是EMC的软件开发中 心,EMC很喜欢要英特尔,marvell,oracle,IBM,HP这类公司的人才,薪水也很高,而且四金个人那部分也由公司代交,拿到手的确实比较 多,也是很不错的公司。对于软件职位的要求,他们也多半是要求strong experience in Linux C/C++,OS kernel 是非常perfer,偶尔有些windows方面的要求,因为他们主要是网络存储方面的,所以偏底层的软件职位还是更多。 Intel,英特尔 在上海的软件研发中心人很多,目前都在紫竹那一块,intel网罗的也都是中国最优秀的计算机人才,英特尔的工程师一般知识都很全面,公司的业务也很全 面,芯片半导体,无线网络设备,多媒体,纯软件方面的比如complier,middleware等等,他们的系统平台也多半是Linux,有些是 Wince,C/C++的经验。intel是个很好的公司,加班也不多,这是技术型的公司,在里面你能找到很多大牛,硕士工作个5,6年一般你如果不是太 差,都有个30w左右的年薪。 Marvell,这个半导体公司这几年简直发展太快了,收购了intel的一个偏硬件部门还有UT 的一个无线芯片部门,顺便提一下,marvell的创始人是一个印尼华裔和一个上海姑娘,强人啊,真给中国人长脸,里面的业务大家可以去他们网站查询,主 要涉及存储,通信芯片这方面的业务,软件方面的职位也多是要求Linux C/C++,对kernel比较了解。 MicroSoft,如果以 上的几个公司都offer不起你的话,请你到微软来试试,目前微软在上海的研发中心多半的业务还是集中在MSN这方面,估计还有些外围的业务,很核心的产 品国内目前没有开发,他们对候选人十分挑剔,想给microsoft找个合适的manager,不给他们推荐3,40个大公司的候选人简直不太可能。不过 很多人对微软目前在国内的业务不是很感兴趣,所以找合适的人对他们来说就更难了。 其他很多有名的公司我就不多说了,比如AMD,HP,IBM,freescale,apple,sybase,等等,local的还有盛大,google,等等。。各有各的风格和企业文化。 所以可见,通信,半导体行业的各类人才,软件方面主要focus再Linux ,Kernel,C/C++,如果您足够优秀,有垮平台的开发经验更加好。硬件方面就是集中在ASIC设计,IC设计等等比较抢手,还有一个最重要的,要 想进入这些大外企,英语是非常重要的,一般他们所有的面试80%都是英文面试。 作为一个有点愤青的猎头,从这些跨国企业选人才的标准我不禁感叹万千。 1.这些大公司会把国内那些最优秀的人才选走,然后给予比较高薪的待遇,当然这待遇跟国外的工程师比起来,成本已经低了很多,这也是他们为什么大都把研 发中心签到中国来的原因,当然,大多数工程师还是做不到核心的技术,多半也是一些外围的东西,但是成熟的外企制度和优厚的待遇让他们不可能再去考虑 local的公司,而即使自己创业,因为你接触的核心东西并不是很多,所以也很难有什么创业的发展前景,比如芯片半导体这个领域。 2.外语, 让人感觉很痛心的就是,这些老外到中国来选人才,却要求一个东方人会很流利的英语,这是为什么?就是因为人家比你强啊,大家也不止一次看到国,一个满嘴操 着英语的人可以到中国来混吃混和,甚至我们更多中国人还客气的跟他们讲英文,以为是个学英语的好机会,而这是我们的领土啊,这里都是说中国话的,到你们的 土地上说英文我没什么好讲,但是来到我们的土地,请你们老外要学点中文,中文可比英文有意境多了。可事实并不是这样,大多数人甚至都恨不得忘记自己的母 语,满嘴中文夹着英文,哎,有时候,我真感叹,这是不是一种高科技和平年代的侵略方式呢? 其实大家想想,外企真的给我们中国带来了什么?除了 解决了很多人的就业,确实也提高了很多人的生活水平,可真正的核心技术还是老外控制,即使进了外企,也很难进入一个很高的职位,公司的利润大都还是被欧美 带走,GDP留给中国了,说白了,人家利用的还是你的廉价又廉价的劳动力。 3.反思当代中国大学教育,很多老师,教授其实根本不知道当前社会上需要什么样的人才,单就中国大学的教育来讲,真的是很失败的,教学内容的更新完全落后于技术的更新。 4.职业发展,我常常听很多做了3,4年的候选人说,我不想做技术了,我已经做project leader,不要给我推荐Engineer的职位,其实这种想法也只有在中国人的工程师里出现,对于这种很牛的技术型公司,PL并不是一个 position,大多数是由比较senior的engineer担任,manager才是一个position,像intel,思科,emc这种技术型 的公司,职业发展都是分两路走,一种是走技术路线,一种是都管理路线,并不是说技术的就比管理的薪水或级别低,他们的level是彼此独立的,薪水一样有 很大提升空间的,但即使是manager的职位也要保持非常深厚的技术功底,但也许不如technical lead 关心的那么细节和深入。 国内很多毕业生的想法就是,做几年技术,做个leader,就可以不用再弄那些枯燥无聊的coding了,只要管管人,协调一下,就好像解放了一样,这也就是很多国内的公司为什么无法作出最好的技术,保留住最好人才的原因。 让喜欢技术的人继续研究技术,有管理能力的人从事管理。这才是人才分配的最好方式,当然,中国的用人制度跟从小到大的教育都是密不可分的,想解决这些问题必须治标又治本。 5.说的有点多了,大家有什么要交流,请加我 msn: zis_an@hotmail.com 顺便也打打广告,目前有Cisco 的偏底层开发的Embedded sw egr职位,以及EMC的软硬件测试类Sr.egr,manager的各类职位,还有其他一些公司,如果有意向请大家联系我. msn: zis_an@hotmail.com 电话: 021-61645520 |
|
|||||||||||||
|
|