Qiaoben

Qiaoben

@Qiaoben

  • ❤️ Liked post in 喜欢变得可爱
    游戏 / 娱乐
    uika_winwing uika_winwing Post #9

    很多人想变女生其实是缺爱,羡慕小女孩能被他人无条件宠爱。国内 mtf 群体的普遍特征:计算机编程、音游、高强度网上冲浪、二次元等等,都能显示出 their 孤独感,和大部分女生会有的喜好差别很大。

    社会要求所有男性都表演得强硬、阳刚,这让希望得到宠爱和关心的大量年轻男性产生了强烈的疏离感、不匹配感,或者说 荒诞感 Absurdity。荒诞感的一大来源就是人的主观能动性的可支配性与命运的不可掌控性之间的矛盾。

    我注意到 X 上有些 mtf 会认为自己每天吃药、与家人和亲朋好友作斗争等等是为了活成自己想要的样子;而另一部份 mtf 会认为自己当下受苦的终极目标是牺牲,从而造就住在自己身体里的那个

    这代表了人在面对荒诞感时所选择的两条路线:斗争与自杀。

    说起来,人生真是一个极其荒诞的事情。命运给了你思考的能力、努力的机会,却又喜爱一次次在易如反掌间将你的奋斗化为虚无。

    对于女生也是一样,社会要求自己表演出所谓母性,而这与很多人在事业等方面追求进步的强烈意愿相悖。

    做女生还是做男生没有哪边更加轻松,性别焦虑将会长期存在。我们当然可以劝说很多跨儿,尽量选择对自己和他人伤害最小的方式来解决问题,但绝不能否认 them 遭受苦难的现实——所有他人都是加害者的一份子。

    同时我们也很开心地看到,这个世界正在打破许多传统观念的束缚,人类群体一天比一天生活得更加自由和开放。

  • ❤️ Liked post in 好句分享楼
    谈笑风生
    lokfaa 今夜雪糕shouldgo Post #20

    二百年后这里什么也都不是,
    宇宙里有什么不是暂时?

    图片|281x500

  • ❤️ Liked post in 好句分享楼
    谈笑风生
    一只玉米人 玉米🌽 Post #16

    自顾自地幻想,自顾自地破防

    我绝不允许金句楼里没有这句🤣 🤣 🤣

  • ❤️ Liked post in 手掰泡馍,有趣捏
    谈笑风生
    Komeiji_Koishi Komeiji_Koishi Post #2

    近两年没在外面吃过泡馍,但我刚来西安的一两年(大概 18,19 年),基本上所有泡馍店都是要你自己掰的,或者是店家会问你需要自己掰还是帮你掰,我觉得至少在西安自己掰才是普遍方式!

  • ❤️ Liked post in 定期搬点 T 大优质树洞
    深入交流
    Lrving 夕阳 Post #3

    《体制内与互联网大厂薪酬对比》
    趁着这轮 pdd 舆论事件,老学长科普一下体制内与互联网时薪对比吧。数据来源来自于自己和同学。

    先说背景,dz 双清毕业在某垄断央企,里面有类似于高校的职称体系;同学在快手,本硕贵系科班,offer 是 sp。

    dz 第一年实习期,到手 12w 左右,第二年转正到手 20w 左右,第三年升中级职称(相当于讲师),到手 25w 左右(不含出差补贴等),偶尔加班,出差一年大概有 100 来天,算上出差补贴到手 27w,平时不忙的时候 9 点上班 5 点下班,时薪¥120-130。

    dz 同学签了 50w 总包,因为他还没入职,HR 宣称 995,然而快手前一阵子已经开始全员大小周了......这里按照高的算,全部按官方口径,也认为打包就是税前年薪,扣五险一金和税以后实际到手 35w-37w(看财务怎么合理缴税),时薪¥100-105。

    知乎有华为拿了 50w 总包的哥们说到手只有 31w,工作强度大概是 997,时薪¥70-75。按照简单的计算方式,在公积金交满的情况下,税前收入的 77.8%(公积金 12%,医疗 2%,养老 8%,失业 0.2%,北京单边公积金封顶 3350 左右)再扣税就是到手收入,所以我同学打包 50w 可能实际到手 35-37w 不等。

    也有同学可能会说,互联网行业涨薪快,体制内基本不涨,体制内第一年等于没有收入等等。

    dz 由于不在互联网行业不太清楚行情,就说一下央企的涨薪:和高校类似,按照职称来升,30 岁副高之后加上讲课费、专家费等,大概一年能到手 32w-35w 左右,这是运气一般没当上领导的稳定收入。实际上,我们单位很少有因为钱走的,更多还是因为竞聘领导岗位失败或者干得不开心;至于第一年收入太少的问题,单位考虑还是很周到的,前两年没钱的时候有宿舍。

    大家自己衡量吧,想赚快钱 dz 还是推荐去互联网,但是建议大家思考退路

  • ❤️ Liked post in 求推荐自学转码的路径
    谈笑风生
    TsuinoSora TsuinoSora Post #5
  • upload_bot Post #1

    1.前言

    综述

    无论你是本科毕业就离开校园,还是读了硕士乃至博士,一份普通的工作最终都是大部分同学的归宿。虽然校园经历会成为令你受益一生的财富,但工作却是实实在在地会陪伴你一生。一份好的工作是你的人生接下来几十年生活下去的基础,因此找工作在你人生中的的重要性绝不亚于高考、考研,只不过高考和考研每个人一般一生中只有一两次机会,找工作的机会会相对多一些,但也绝不能不重视。
    #####关于校招

    • 在校生必须牢记一点:校园招聘和社会招聘的难度是天壤之别。
      无论你是排名靠前、专业技能过硬的相对优秀的一批同学;
      还是成绩平平、专业技能也一般的普通同学,
      又或者是成绩在及格线徘徊、也不熟悉专业技能的同学,
      校园招聘对你们的重要性都是一样重要的,绝不存在优秀的同学就不需要参加校招,也绝不存在排名低一些的同学校招结果就一定比优秀的同学差。

    因为对优秀的同学来说,校招是冲击高起薪的绝佳机会,因为毕业后短期内社招几乎不可能拿到校招 special 的起薪;
    对于中等同学来说,校招是进互联网/游戏大厂的绝佳机会,因为大厂对校招一般要求基础过关即可,与社招的要求完全不同;
    对于成绩靠后/技能水平较差的同学来说,校招也是找好工作的绝佳机会。如果对自己的技术水平有自信,互联网/游戏公司等的技术岗位也可以多做尝试,一般都是有机会的;对技术不自信也可以尝试产品/运营等岗位,薪资同样很高,并且这些岗位的社招难度非常大,校招容易进很多,你毕业后再想找到这样的工作基本上就是没有任何可能了。

    关于换工作

    年轻人的试错成本很低,校招后 1~3 年内更换工作是非常常有的事情。因此当你觉得薪资不够、加班过多或是被 PUA 过于严重,可以果断点大胆地去找工作。但坚持在一个行业,坚持在一个城市下去是你长期下去累积财富、人脉与职业发展的基础。因此我觉得工作只要有好的机会都可以去尝试,但我不建议轻易更换行业和城市。
    切记轻易不要裸辞。一般来说毕业后三年内,你还不太容易成长到脱离螺丝钉阶段的程度,因此裸辞带来的风险是极其巨大的。

    关于工作环境

    刚毕业的同学往往喜欢去年轻人多的公司,以为年轻人多之后公司就会有很好的氛围,同事们同龄也容易相处的更和睦。这个想法本身没错,但需要慎重考虑,因为笔者曾经以应届生身份抱着同样想法进入 B 站工作,结果吃了亏。
    总体而言,去年轻人多的公司是没错的,因为年轻人多的公司往往意味着发展空间大,发展迅速,氛围也更轻松,职场政治、PUA 等现象也会少一些;
    但注意最好不要去过于年轻的团队(比如毕业三年内的同事占比超过 50%)的公司,因为刚毕业的学生很容易把学习的努力劲头带到职场,很容易把办公室的氛围搞得跟在钱学森图书馆上自习一样,还喜欢搞无意义的加班,如果团队里这样的同事太多,很容易把气氛搞得非常卷,最终的结果就是大家一起无限加班。对于 22 岁左右的本科应届生以及 25 岁左右的硕士应届生,最好是去一个平均年龄 28~35 岁左右的团队,这样的团队往往既不会有代沟,也懂得职场的基本规矩,不太会做无谓的加班而且还有利于你的快速成长。

    2.我能找到什么样的工作?

    2.1 城市选择

    一般来说,在校的同学找工作会把行业、岗位放在首位考虑,但我的建议是把城市选择放在首位。因为你能进入什么行业、能找到什么岗位,最终依然还是由城市决定的。城市几乎决定了你所在的行业你可以奋斗到的上下限,以及你的投入产出比。一般来说,一线城市的优势是投入产出比会非常的高,而二线城市优势是购房的压力较小。

    如何选择工作的城市?

    这种问题没有标准答案,一切取决于你的实际情况。不过我会给出几个挑选城市的思考角度:

    ① 房价

    房价几乎是定居在哪里的根本决定因素。但在如今的社会,不啃老买房基本上是天方夜谭。即便你拿到了大厂 special,一毕业年收入就有 40w,面对一线的离谱房价你也依然难以一人承担。因此你能在哪里长期生活下去,基本取决于你家里能拿出多少钱给你买房。

    家里如果能拿出 500w 以上(或有等值 2-3 套房可供置换),可以考虑在北上广深定居;
    家里如果能拿出 250-500w,可以尝试冲击一下上海郊区,因为上海的郊区相对没其他一线那么贵,并且首付比例可以做到新房 35%,二手房 65% 左右。
    家里如果能拿出 100-250w 左右,建议先在二线省会级城市买一套房保值,观察几年再看能否置换一线的首付,如果不能也可以留作回二线生活的保障;
    家里如果拿不出什么钱,建议安心在二线城市攒首付。一般二线城市的首付,比如西安在 30w-80w 不等,你工作 3-7 年不等也都是大有机会攒够的。而且如果你有对象的话那压力还可以减半,跟爸妈稍微要一点的话基本还是能做到 30 岁前买下房子。

    ② 行业

    一个城市的行业发达程度基本决定了你能奋斗的上限。比如如果你就想一直当程序员干下去,并且是在西安的话,那么你能奋斗到的天花板也无非就是华为、中兴、思特沃克等这些这些企业;如果你在上海的话,你就有机会进入字节、美团等大厂,或者是米哈游这种发展非常快、非常赚钱的企业;而如果在北京或深圳的话就有更好的进入互联网大厂的机会了。总而言之,要考察清楚一个城市都有哪些公司,行业的水平究竟如何,搞清楚有没有能让你得到发展的机会,再做决定。

    举个例子,如果你要做半导体行业,那么你在上海可能获得的职业发展最大,在西安也不错,但你如果去了一个半导体行业不太发达的二线城市(例如长沙、济南等),那么这个选择就不太合理。但如果你要做娱乐行业,那么长沙一定是一个不错的选择。所以还是需要根据行业来定。

    ③ 加班、竞争与压力

    如今这个时代背景下,在任何城市的加班几乎都是不可避免的。但加班、竞争与压力这些概念之间还是有些区别的,并且在不同城市体现的很不一样。

    笔者曾经在西安和上海两地工作过。总体而言西安的加班情况比上海严重,西安的竞争与工作压力也都强于上海。当然这不一定适用于其他二线城市与其他一线城市的比较,仅供参考。这个结论可能与很多人的印象不符,为什么一线城市反而加班、竞争小一些呢?以下就由我来解释一下:

    原因 1:西安房价较低导致很多本地大学生留在西安找工作。

    西安的就业环境其实是有点病态的。目前的情况是有很多像西电、交大、西工大这样优秀学校的本科、硕士毕业生进不了大厂,只能被迫进一些小公司甚至选择回家考公。这并不是因为学生不够优秀,而是因为西安这个地方根本没有足够的企业来提供足够的岗位给这些毕业生。而上海有足够的公司数量,能够提供足以消化这些毕业生的岗位数量。因此往往存在以下现象:一个同学在西安拿不到什么好的 offer,但去了上海却可以拿一堆优秀企业的 offer。

    原因 2:很多企业把研发任务放在二线城市

    为了节省程序员的工资成本,很多企业都选择把总部设在一线城市,把写代码的部门放在二线城市从而降低研发部门的工资。因此导致一线城市的工作以产品设计、运营、商务等为主,而二线城市成了码农集中营,所以加班自然就严重了起来。比如著名的德勤就是把研发部门(GDC)放在重庆,总部设在上海,上海产品总部以产品设计、流程设计、需求分析等工作为主,加班就很少,而重庆 GDC 就被上海的德勤总部天天催着干活,工资还更低,说白了就是压榨。这种运作模式在大量企业都存在,因此二线城市的研发部门实际上成为了很多大企业的码农工厂。而在西安就存在大量这样的码农工厂。

    以上只是我的个人经历和见解,我也没有绝对的认为一线城市压力就是比二线城市小,毕竟还是要具体到每个人来看,每个人的工作都是不一样的。但这个问题确实需要结合实际来看,绝不能刻板地认为只要离开一线城市回到西安这样的二线城市,压力就小了。

    2.2 行业选择

    2.2.1 互联网/游戏等 C 端软件业

    从薪资待遇上来看互联网/游戏行业依然是目前应届生能够快速获得较高起薪的第一梯队行业。但值得注意的是游戏行业近两年受到的政策打压比较严重,前景不是很明朗。

    该行业的校招竞争十分激烈,西交的学历往往在校招竞争中并不占优势,因此对自身的技术积累、项目经历会有一定要求,一般都需要掌握某个特定领域的技能。具体需要掌握的技术可以参考第三章--如何成为一个计算机知识体系完整的毕业生,这里对技术的具体内容不再赘述。

    另外,互联网/游戏行业也会招聘大量产品/运营等非技术岗,适合技术基础较为薄弱的同学。并且尽管是非技术岗,但计算机专业的出身一般都会让你在这两个岗位的竞争中占据有利位置。产品/运营岗位虽然起薪会比技术低一些,但发展空间同样很大,也是值得为之奋斗的不错的选项。
    产品岗位一般要求有出色的逻辑能力、优秀的表达能力、问题分析能力,以及较强的主观能动性,以及总体的规划统筹能力。运营岗位则更侧重于具体问题的分析、数据的分析以及对互联网/游戏的内容的了解和理解能力。总而言之,都不是一些硬技能,同学们都可以大胆尝试。

    另外游戏公司会招聘游戏策划岗位,这个岗位非常适合对游戏有浓厚兴趣的同学,也是一个上限很高的岗位。

    这个行业比较有代表性的企业有:
    阿里(支付宝、蚂蚁金服等)、字节、腾讯、百度、美团、B 站等

    游戏行业主要有:
    腾讯游戏、网易游戏、米哈游、鹰角、莉莉丝、叠纸等

    注:游戏行业的小公司不太推荐去,因为现在游戏行业被打压的很厉害,市场基本被上面几家垄断,小厂几乎没有发展空间

    2.3 中会详细介绍常见的互联网/游戏企业的一些优点和雷区。

    2.2.2 AI/大数据等以研究性质为主的企业
    2.2.2 芯片/半导体/集成电路/通信等相关产业
    2.2.3 ERP/咨询/B端软件业
    2.2.4 教育
    2.2.5 公务员
    2.2.6 国企/事业单位

    2.3 公司/岗位选择

    2.4 海外就业(todo:需要相关经验者补充)

    3.我应该挣多少钱?

    4.如何做到工作与结婚、成家、买房等长期计划的互相促进与统一

  • chatgpt ChatGPT Post #7

    如何看待科大表白墙下关于出国读 PhD 利弊的新一轮讨论? - 微调的回答 - 知乎

    https://www.zhihu.com/question/324846525/answer/688046667

    其实道理很简单,不少学习能力出众的人,尤其是从信息不发达地区来的人,很容易在信息不对等的环境下被灌输低价值的目标并为之奋斗。但因为其自身的智力水平较高,总会一步步的从“美梦”中醒来,而陷入痛苦与迷茫中。对聪明人洗脑的其实并不难,因为他们爱分析爱思考,使用得当更容易被误导。首先你先把低价值的事物包装的难度极大,人们会不自觉的把难度和价值划上等号。其次就是营造竞争环境,让他们周围的人都朝一个方向努力,异端者就会不断的怀疑自己。最后就是善用权威身份,利用社会地位年龄差距对它们谆谆教诲,甚至大打感情牌。三招下来,大部分涉世未深的年轻人都逃不出去。

    想起个小故事。我高中虽然是走读生,但和班上的常住生走的很近。这些常住生都是货真价实的学霸。我们学校的政策是每年都会和各个地县市跟前几名学生签保送合同,所以我的“县城学霸“朋友们的学习能力无疑都是很强的。其中我印象很深的是 W 君,他在床正上方贴了一张“我要上北大”激励自己,每天一睁眼就能看到。住校生们晚上学习都是两班倒,也就是宿舍八个人分两组,第一组人从下了晚自习后的 11 点学到凌晨 3 点,再叫醒第二组人从 3 点学到早上 7 点,每人只睡 4 小时,互相激励。而 W 君就是其中一员,绝不浪费一丝一毫时间,甚至忙起来一个月才去洗一次澡。

    曾经我问 W 君:“你为什么要走化学竞赛呢?”他说因为他擅长化学,走这条路去北大成功率最高。至于未来干什么,他说家人希望他去北大,将来或许可以当教授。那个时候的我什么都不懂,只觉得 W 君好强。后来听说他竞赛发挥失利,无缘北大去了一所一本,最后去了某房地产公司做销售。现在倒回来再想,或许对他而言也未必是件坏事。

    其实这就是县城学霸,以及我们普通人中佼佼者活的更加痛苦的原因:你会认同自己是有能力的人,却因为客观和人为的原因而总被带偏到了沟里面,等琢磨清楚时往往都已经在沟里面了。所以聪明人反而更可怜,因为大部分时候命运都不掌握在自己手里,这种无力感反而更折磨人。

    我读硕士时有两位同学都已经在北美名校拿了博士学位,甚至其中一位还来自于藤校。我当时就很好奇他们为啥要“人往低出走”,来读计算机硕士。他俩相对无言,表示当年没多想读了基础学科的博士,读完才发现找教职和工作都是地狱难度,对比而言花两年读个硕士真的不算什么,上学的每天都很开心,因为找实习和全职都轻松多了。

    后来我在一亩三分地做了一阵子管理工作,每天浏览大量帖子。我常常都忍不住想问发帖人,“你们是为了出国而留学”还是“为了留学而出国?”在我的观察中,有大量人是真的不知道自己为啥要做这件事,也不知道未来想做什么,只知道周围人都这么做,那么我也必须这么做,这也就是其他答主说的“被洗脑后的盲目从众”,这大概就是“失败”的第一步。还有一类人觉得需要靠出国来证明自己的“优秀”,尤其是去录取率低的项目。但真相是:「稀缺不代表优秀,难度不代表价值」。我们必须明白,很多难度是资源匮乏和人为操纵下强行产生的,而背后没有多大的附加价值,因此如果有条件切勿追逐无意义的难度。而人的社会性会让我们不自主的模仿或者跟随“头羊”而行动,而忽视了行动的合理性。如果不思考为什么做一件事而单纯从众,为了面子里子或被人忽悠去加入竞争,为难是举,那大概率是要被社会教做人的。所以在加入竞争前,先问问自己:1)这件事竞争为何如此激烈?2)这件事真的有价值吗?3)这件事适合我吗?如果没想清楚就加入竞争,大概率是要在韭菜和分母中二选一了。

    所以我再重复一下其他答主的观点:“非对科研有浓厚兴趣且天分超人不要读博,非家境殷实不要读博,以上两条特别针对文史社科类及基础学科同学。”都 9102 年了,万万不可抱着“万般皆下品惟有读书高”“读书改变命运”“我是天选之人”这种绝对想法,有大概率你拿的不是主角剧本,甚至连配角都轮不上那种。如果你实在想做科研,不如把阵线拉长一点,不要一气读下去。可以尝试本科后先工作试试,或者研究生毕业后先就业,之后感兴趣再读博。这个时候肯定有家长会跳出来反对,说学习就要一气完成,反对你们中途就业。但请相信我,父母这代人的观念其实已经落后了,这点对于县城出身的人尤甚。这个时候你真的要寻求指导,也尽量找 30-40 岁大城市的亲友,他们和最新信息的距离更近,甚至是网友都信,毕竟年轻一代精英的信息优势远大于我们父母的人生经验。

    我小时候跟一位画家学油画,他特别喜欢给我们说些人生经验。十几年过去了,我把画画都忘光了,但还记得他背着手跟我们说:“评价一个艺术家的成就,你得先看看他/她的东西有没有形成风格,没风格、没有独立思考的作品一文不值。”

    仔细一想,做人也是这么个意思。

  • ❤️ Liked post in CS61a 2023 暑期 学习日记
    深入交流
    TsuinoSora TsuinoSora Post #1

    种种原因,本来说暑假学完 cs61b, 但因为 cs61a 此前没学,于是决定先速通 cs61a
    选择的是 fa20, 因为听说这个学期开源的最多

    这是个日记贴,按道理来说会每天更新,也是对自己的一个督促

    [date-range from=2023-06-26T07:30:00 to=2023-06-27T01:00:00 timezone="Asia/Shanghai"]

    先从 Textbook 阅读开始,阅读了 ch1.1, ch1.2, ch1.3, 虽然上个学期自学过 python, 但是大片的英文读的我属实是有点不适应 (感觉语法之类阅读难度都胜于之前读一些文档,, ,).
    这样一对比,看完 textbook 再看 videos 就很享受了,20fa 的 John 教授口语十分清晰好听很容易听明白.
    然后试了下课程配套的 lab, 很好用孩子很喜欢吃 (bushi

    一天下来没写什么东西,倒是十分感叹别人家教学的先进和人性化.

    笔记

    Expressions

    • Expressions
    • Call Expressions

    Name

    Name -- bind -- object

    The name of a function is repeated twice, once in the frame and again as part of the function itself. The name appearing in the function is called the intrinsic name. The name in a frame is a bound name.

    There is a difference between the two: different names may refer to the same function, but that function itself has only one intrinsic name.

    Environment

    The possibility of binding names to values and later retrieving those values by name means that the interpreter must maintain some sort of memory that keeps track of the names, values, and bindings. This memory is called an environment.

    An environment in which an expression is evaluated consists of a sequence of frames.

    Each frame contains bindings, each of which associates a name with its corresponding value.

    There is a single global frame.

    environment-frame-1|690x233

    Assignment and import statements add entries to the first frame of the current environment.

    Evaluating Nested Expressions

    expression tree:

    expression_tree|508x356

    The Non-Pure Print Function

    In addition to returning a value, applying a non-pure function can generate side effects, which make some change to the state of the interpreter or computer. A common side effect is to generate additional output beyond the return value, using the print function.

    >>> print(print(1), print(2))
    1
    2
    None None
    

    Calling User-Defined Functions

    To evaluate a call expression whose operator names a user-defined function, the Python interpreter follows a computational process. As with any call expression, the interpreter evaluates the operator and operand expressions, and then applies the named function to the resulting arguments.

    Applying a user-defined function introduces a second local frame, which is only accessible to that function. To apply a user-defined function to some arguments:

    1. Bind the arguments to the names of the function's formal parameters in a new local frame.
    2. Execute the body of the function in the environment that starts with this frame.

    The environment in which the body is evaluated consists of two frames: first the local frame that contains formal parameter bindings, then the global frame that contains everything else. Each instance of a function application has its own independent local frame.

    local-names-in-func|690x491

    Functions as Abstractions

    Aspects of a functional abstraction. To master the use of a functional abstraction, it is often useful to consider its three core attributes. The domain of a function is the set of arguments it can take. The range of a function is the set of values it can return. The intent of a function is the relationship it computes between inputs and output (as well as any side effects it might generate). Understanding functional abstractions via their domain, range, and intent is critical to using them correctly in a complex program.

    For example, any square function that we use to implement sum_squares should have these attributes:

    • The domain is any single real number.
    • The range is any non-negative real number.
    • The intent is that the output is the square of the input.

    [date-range from=2023-06-27T08:00:00 to=2023-06-28T01:00:00 timezone="Asia/Shanghai"]

    今天睡觉睡得很多 (下午从 13:00 睡到 17:00), 有点低效率,只读完了 textbook ch.1.4-ch.1.5, 看完了 lec3 的 videos, 完成了 lab01 和 hw01
    照这个速度看速通比较困难,所以明天 (今天早上起来) 开始需要尽可能保持高效才行 😮‍💨

    笔记

    Ch.1.4 Designing Functions

    Remember, code is written only once, but often read many times.

    Documentation

    A function definition will often include documentation describing the function, called a docstring, which must be indented along with the function body. Docstrings are conventionally triple quoted. The first line describes the job of the function in one line. The following lines can describe arguments and clarify the behavior of the function.

    Comments in Python can be attached to the end of a line following the # symbol.

    Default Argument Values

    In Python, we can provide default values for the arguments of a function. When calling that function, arguments with default values are optional. If they are not provided, then the default value is bound to the formal parameter name instead.

    As a guideline, most data values used in a function's body should be expressed as default values to named arguments, so that they are easy to inspect and can be changed by the function caller. Some values that never change, such as the fundamental constant k, can be bound in the function body or in the global frame.

    def pressure(v, t, n=6.022e23):
    	"""Compute the pressure in pascals of an ideal gas.
    
        v -- volume of gas, in cubic meters
        t -- absolute temperature in degrees kelvin
        n -- particles of gas (default: one mole)
        """
        k = 1.38e-23  # Boltzmann's constant
        return n * k * t / v
    >>> pressure(1, 273.15)
    2269.974834
    >>> pressure(1, 273.15, 3 * 6.022e23)
    6809.924502
    

    Ch.1.5 Control

    Statements

    At its highest level, the Python interpreter's job is to execute programs, composed of statements. However, much of the interesting work of computation comes from evaluating expressions. Statements govern the relationship among different expressions in a program and what happens to their results.

    Compound Statements

    • A simple statement is a single line that doesn't end in a colon.
    • A compound statement is so called because it is composed of other statements (simple and compound).

    Together, a header and an indented suite of statements is called a clause. A compound statement consists of one or more clauses:

    <header>:
        <statement>
        <statement>
        ...
    <separating header>:
        <statement>
        <statement>
        ...
    

    We can now know that,

    • Expressions, return statements, and assignment statements are simple statements.
    • A def statement is a compound statement. The suite that follows the def header defines the function body.

    We say that the header controls its suite.

    Defining Functions II: Local Assignment

    The effect of an assignment statement is to bind a name to a value in the first frame of the current environment. As a consequence, assignment statements within a function body cannot affect the global frame.

    Conditional Statements

    A conditional statement in Python consists of a series of headers and suites: a required if clause, an optional sequence of elif clauses, and finally an optional else clause

    There is short-circuiting in Python when executing logical expressions

    Functions that perform comparisons and return boolean values typically begin with is, not followed by an underscore (e.g., isfinite, isdigit, isinstance, etc.).

    • not has the highest priority
    • and
    • or has the lowest priority

    Iteration

    A while clause contains a header expression followed by a suite:

    while <expression>:
        <suite>
    

    A while statement that does not terminate is called an infinite loop. Press <Control>-C to force Python to stop looping.

    Testing

    Assertions

    Programmers use assert statements to verify expectations, such as the output of a function being tested. An assert statement has an expression in a boolean context, followed by a quoted line of text (single or double quotes are both fine, but be consistent) that will be displayed if the expression evaluates to a false value.

    >>> assert fib(8) == 13, 'The 8th Fibonacci number should be 13'
    

    When the expression being asserted evaluates to a true value, executing an assert statement has no effect. When it is a false value, assert causes an error that halts execution.

    A test function for fib should test several arguments, including extreme values of n.

    >>> def fib_test():
            assert fib(2) == 1, 'The 2nd Fibonacci number should be 1'
            assert fib(3) == 1, 'The 3rd Fibonacci number should be 1'
            assert fib(50) == 7778742049, 'Error at the 50th Fibonacci number'
    

    When writing Python in files, rather than directly into the interpreter, tests are typically written in the same file or a neighboring file with the suffix _test.py.

    Doctests

    Python provides a convenient method for placing simple tests directly in the docstring of a function. The first line of a docstring should contain a one-line description of the function, followed by a blank line. A detailed description of arguments and behavior may follow. In addition, the docstring may include a sample interactive session that calls the function:

    >>> def sum_naturals(n):
            """Return the sum of the first n natural numbers.
    
            >>> sum_naturals(10)
            55
            >>> sum_naturals(100)
            5050
            """
            total, k = 0, 1
            while k <= n:
                total, k = total + k, k + 1
            return total
    

    Test all functions:

    the interaction can be verified via the doctest module.

    >>> from doctest import testmod
    >>> testmod()
    TestResults(failed=0, attempted=2)
    

    Test one function:

    we use a doctest function called run_docstring_examples.

    Its first argument is the function to test. The second should always be the result of the expression globals(), a built-in function that returns the global environment. The third argument is True to indicate that we would like "verbose" output: a catalog of all tests run.

    >>> from doctest import run_docstring_examples
    >>> run_docstring_examples(sum_naturals, globals(), True)
    Finding tests in NoName
    Trying:
        sum_naturals(10)
    Expecting:
        55
    ok
    Trying:
        sum_naturals(100)
    Expecting:
        5050
    ok
    

    When writing Python in files, all doctests in a file can be run by starting Python with the doctest command line option:

    python3 -m doctest <python_source_file> 
    python3 -m doctest -v <python_source_file> 
    

    The key to effective testing is to write (and run) tests immediately after implementing new functions. It is even good practice to write some tests before you implement, in order to have some example inputs and outputs in your mind. A test that applies a single function is called a unit test. Exhaustive unit testing is a hallmark of good program design.

  • studio Post #1

    一。初衷

    lz 在本科去北京上海实习期间,震惊于大城市里很多远不如西交的学校的同学都能很容易早早去公司实习,而西交的同学却少得可怜。lz 认为根本原因是大多数人没有这个意识,也不知道该怎么找实习,因此写了这篇文章。

    二。本文面向对象

    1. 想找实习但是不知道怎么找的同学,或者干脆就不知道该干啥的同学。

    2. 本文不适合 完全不打算找互联网工作的同学。包括且不限于家里有矿安排工作,想考公,想转行等等。

    三。困难

    1. 对西交同学来说,最大的困难就是地理位置,直接杜绝了日常实习的可能性。lz 认识的所有能在学期内实习的同学都是付出了极大的代价。

    2. 消息闭塞,没有什么信息来源。很多时候一件事的难度并不来源于事情本身,而是源自“为什么”,“不知道”和“怎么做”。

    四。为什么要实习

    1. 可以极大提升生活水平,稍大一些的互联网公司实习薪水都有近万元。

    2. 大多数互联网公司并不卡学历,在就业情况比较好的年份,一段知名公司的实习完全可以让你本科毕业就找到工作。

    3. 提前了解码农的生活,在自我感觉不适应的情况下可以及时止损(比如 lz 舍友在三段实习之后就决定回老家躺平)。这都是可以理解的,本文不鼓励单一化的价值观,在一线还房贷,在美帝赚刀乐和在老家打游戏并没有高下之分,只要是自己选择的生活。

    五。误区

    1. 本科生只需要好好学习,工作总会有的。
      答:对其他专业可能是这样,但是在计算机专业,一份实习对工作的重要性远大于你的成绩。而且正相反,如果你只在学校学习,大概率不能找到任何工作。

    2. 本科生可以保研再工作。
      答:截至 2023 年,计算机专业保研再工作和本科直接工作没有明显差别。当然有些人说根据统计规律,研究生比本科生找到的工作多,也更加高端。根本原因是大多数人本科过于菜,研究生才接触了一些真正的实用性技能,如果一个本科生和研究生水平一样,他们能找到的工作就是一样的。此处不讨论博士,因为能和博士水平一样的本科生也不需要看这篇文章了。

    3. 本科找实习太难了,一般都是大牛才去。
      答:事实是按照目前西交的本科培养,你学不到任何公司需要的技能,大家一直在学习错误的知识,只要学习方向正确,哪怕是在就业很难的年份,找一份实习也不是很难的事情。因为对公司来说,正式工和实习生的成本是完全不一样的。研究生之所以实习的人变多了,并不是因为研究生就能学到什么有用的东西,而是因为研究生不能再拖了,读博士又太久太难,大家迫不得已都开始研究怎么就业了。如果中国发明一个研究生和博士之间的学位,我相信还会有一大堆人继续读的。

    六。实习信息获取

    1. 北大未名 bbs intern 版
      优点:无需注册,岗位非常优质,互联网,金融,创业公司都有,非常推荐。

    2. 北邮人 bbs
      优点:岗位数量极多,私信很多都会回复。
      缺点:需要一个北邮同学的账号。

    3. 知乎
      优点:非常有针对性,一般都是某个人发的,而不是某个公司的招聘,回复会很及时。
      缺点:少,需要你多关注。

    4. 找学长
      优点:会很容易了解到实习的内容,大家都是校友,很好商量。如果你本科在实验室/社团打杂,会很容易认识一些毕业工作的学长,他们也会很乐于尝试招你实习。
      缺点:需要你自己社交,多认识人。

    5. 主页
      eecs 专业的很多人都会有自己的主页,很多都会在主页上写“hiring”(招募),比如 主页。尽管他们并没有在任何平台上发布过招聘。这时你直接发邮件联系是有机会获得面试的。lz 用自身经历验证了这样做的可行性。
      缺点:取决于你使用 Google 的能力。

    6. linkedin
      优点:能有 linkedin 的人都比较靠谱了。
      缺点:中国不太用,外企的人虽然用,大多数也不会经常点开。

    7. 牛客和各种招聘网站
      属于大海捞针,不太推荐。

    七。步骤

    1. 学习你想去的岗位所需的对应知识,这里假设你没有任何超人的其他背景,比如高中大学的 xx 金牌。那么至少需要一个学期学习对应的一到两门国外名校课程,配套实验都认真写完,代码上传到 github 上。

    2. 算法题,一般公司的实习面试,能做做中档题和高频题足够了。

    3. 写一份简历,这里建议参考国外的风格,白底黑字,不要搞国内的那么多花里胡哨,大头照啥的。把 project(项目)那一栏写上你自己做的课程实验,附上 github 链接。这里附一个我觉得不错的 样例。大家可以看到并没有太多的经历,但是只要把项目(project)和技术栈(programming skill)这两栏写详细,还是能凑不少内容的。至于课内成绩,如果是科研相关的实习,你在教育(education)一栏把微积分,线代标出 90+/100 应该也会有不错的效果,至于获奖(award)和科研(publication)就可遇不可求了。

    4. 时间,正如之前所说,西交同学想去日常实习很难,这里只讨论暑期实习。西交计算机系大二大三暑假都可以申请外出实习,而不是做学校安排的校内实习。所以我们需要在 5 月份之前拿到实习 offer,一般寒假过完就可以开始投简历面试了。一个理想的时间线是上学期内用来学知识,寒假用来刷算法题,放完假直接开始投简历。

    5. 面试还是很有讲究的,很多不是很强的人也能通过面试技巧拿到自己想要的工作。这方面我也不是很专业,这里只说一点,可以先投一投在你心中优先级比较低的公司,面试练练手。然后你就会发现,对方一般对你的项目哪些细节感兴趣,希望你怎么回答,你有哪些知识没有掌握(很多都是八股文,你知道就是知道,不知道很难靠自己想出来),然后在面试结束的时候直接问面试官,你觉得我有哪些缺点需要改进。在这样进行最多十次面试之后,你自己心里也就对怎么面试有谱了,比如哪些项目细节需要多吹吹牛逼,让人觉得你做了很多东西。哪些地方可以多思考一步,让人觉得你做得很深。

    tips

    1. 对于实在想去日常实习的同学,这里有一些 lz 尝试过的不太成熟,只能说成功了一半的想法。lz 对这样做的后果不负责:提前修课;直接翘课,请舍友吃饭,让他们帮忙交作业。
      ps:评论里 zzz 同学给出了详细步骤,非常赞。理论上经过精心规划是可以做到在大三空出一整年时间的。事实上 lz 当年信心满满地研究了很久,加上受到 这个 的影响,尝试实践了一下,结果由于水平太菜,最后焦头烂额,所以只能说成功了一半,不好意思写到正文里,怕误人子弟。

    2. 要明确自己的目的。西安是有一些公司的,优点是近。缺点是除了近全是缺点。西安的互联网公司集中在软件新城附近,我记得要坐地铁到鱼化寨终点站,再挤很久公交。有阿里,华为,三星等等,但是岗位都很边缘。对于这种实习,是否值得去 lz 持保留态度。这里注意 lz 的意思不是渣实习不值得去,而是没有明确目标的渣实习不值得去,比如你确定通过这段渣实习能够提升背景,呆三个月混一段使得简历好看,凭此去找好实习,那也是一个好的选择。

    3. 想找国外实习的同学超出了本文的覆盖范围,因为复杂程度远超国内,比如时间紧张(从签证到飞机),英语捉急(多数人托福不到 23 的口语在第一次出国都很难交流),金币储备等等。此处仅供 参考。还有一些曲线救国的特殊策略,比如评论里 zzz 同学提到的远程实习,可以做 gsoc 当跳板,此处也给出 参考 。虽然作者们的描述云淡风轻,但是仔细品味每一句话大家都可以感到难度是突破天际的。当然西交也有一些成功的 例子 1 例子 2,但都不具有广泛的可复制性。

  • ❤️ Liked post in 西安交大美食搜寻站
    深入交流
    TsuinoSora TsuinoSora Post #7

    东南门

    ps: 不介绍大型连锁店

    交大街

    对交大附中后门那条交大街很熟,那块的店家味道都很不错,介绍几家个人吃了很多年的:

    • 麦有道剪刀面:印象里 20¥/碗 汤好喝面好吃,推荐
    • 面香源:典型的陕西面馆,有二合一,三合一等等,面都是十几元,非常符合我对传统陕西面馆的所有想象
    • 晨光烧饼:价格亲民,初中没生活费了天天吃这个,好吃,碳水爱好者最爱

    北沙坡路

    • 小草大排档:初中高中聚餐吃,这几年价格涨的厉害,量也变少了,但烧烤,炒菜味道还是一直很不错
    • 四川菜馆:量大管饱价格亲民,两个人男生吃 3 个菜吃到吃不完,味道有点重 (太下饭)

    学府首座商业街

    • 李家包子:路边小店的包子价格,但是包子比路边小店的还大,还有座位坐。早中晚都有包子吃,再配上 3¥/碗 的粉丝汤简直神中神
    • 重庆鸡公煲:鸡肉鲜嫩,下饭,可自助加米饭。到了饭点店里面人满为患,之前有一周我连吃了一周才感觉有点腻了,可见有多么受欢迎