记中国银联实习面试

作为一名计科学生,大三的暑假是有一次实习的。之前听说学校安排的是去成都实习,实习的内容嘛,估计就是做一个按照软件工程那一套做一个软件项目。我想,那么多人一起能学到些什么呢?实习的地方肯定会按照大众的水平来安排培训教学什么的,而我毕竟自学过一些,感觉一起的话学不到什么东西,也浪费时间,而且也没工资什么的。无感,遂很早之间就有找自己找实习的想法,学院稍微有些底子和上进心的也都在物色实习工作了。 作为计算机学院的学生,耳濡目染之下,第一次志愿自然是像BAT那样的大型互联网公司了。我自然也是对BAT充满了憧憬和向往。其中最想进的是腾讯公司了,虽然外界对其有很多不好的看法之类,但一个公司能做到如今的成功,肯定有其独到之处的,并且由于一些原因我对腾讯也是很有好感。 只是毕竟腾讯是国内数一数二的互联网公司,也不是那么好进的。虽然我投了腾讯的暑假实习招聘的简历,然而在笔试一关就无奈跪掉了。除了前面一些题目之外,后面的一些基本都是算法题,而这也是我的弱项,无奈放弃。我在大学的时候多做项目而比较少算法训练,并且对于算法很是头痛,后来想想也许是有些顾此失彼了,然兴趣不在,也没什么好的办法。只是第一次投简历而且是自己比较心仪的公司就这样错过,心里还是很遗憾的,只能待以后自己成长了再看有没有机会了。 既然大型互联网公司进不去,就只能找找其他公司了。先是在Boss直聘和拉勾上投了一些简历,不过小公司一般不招暑假实习,大公司凭自己的水平又进不去,一段时间内感到很是沮丧。后来有几个小公司愿意面试看看,但是都只是十几人的小公司,和辅导员聊了聊,请求一下意见,被劝之有些浪费时间并且没有什么前途,让我另外找找看,并且说也会帮我留意一下。我想想也许是自己真的有些心急了,就答应下来,并卸载了手机上的招聘软件,打算平静一下。然后刚好在就业群里发现了中国银联的暑假实习招聘,于是试着投了一下Java开发岗位,还是上海那边的。虽然有点远,不过也无所谓了,打算就尝试一下。 投过简历之后不久就发来笔试通知,我想,嘿,那就笔试看看吧,希望别像腾讯那样变态。打开测试网站看到题目的时候,恍然以为自己回到了初中,居然是一些语句排序题,病句判断题,然后后面还有数学题,阅读理解,逻辑题,经济,金融等…虽然做的很是无语,但是还是没什么难度的,不知道的就随便蒙。直到最后才遇到熟悉的专业题目,而且考查的也很浅,就这样做完交卷。令我意外的事,当前晚上就给我打电话叫我去面试,然后发我发了邮件里面说明了要带哪些材料…我想这效率也忒高了吧,莫不是缺人还是根本没刷人,不管了,翻开邮件一一准备材料。让我无语了是各种材料什么成绩单,身份证复印件,四级证书搞得我很是无语,感觉银行企业就是制度多而繁杂,不过没办法,既然决定去了还是耐着性子准备吧。 第二天起个了早,去复印了一下简历什么的,然后上公交,出发。有些郁闷的是手机昨天晚上忘记充电结果电不多了,而面试的地方又是我不熟悉的地方,没地图导航也不知道会不会迷路,有些蛋疼。结果到地方的时候一不注意还坐过了一个站,真是诸事不顺,希望面试的时候别出什么幺蛾子了。一路导航到面试的地方,上楼,签到,去等候区等着。不过让我意外的事居然遇到了熟人,一个同学,还有一个认识的,另外一个是以前的一门课的助教,女生,不过估计已经认不得了。跟熟人打了个招呼,然后注意到要填什么信息收集表,心里默默吐槽了一句,靠,还要填表?买办法,找助理姐姐拿了一张来耐心填着。而这时候第一组去群面了,我心里也开始紧张起来,说实话这还是我第一次正儿八经的面试,我还记得上次面试是我申请社团的时候,还没通过,不知道这次会怎么样。心里胡思乱想之际,然后填完了表,交给了助理姐姐,然后坐在等候区,心情也比较紧张。这时来一个女生,应该也是面试的,穿着黑色制服,黑色丝袜,还挺好看的,在我旁边坐下了。然后她主动跟我聊了些什么,记不太清了,后来了解到也是我们学校的,跟我一届。我随便应付了一下,主要是不知道怎么和女生搭讪,计科宅男好像都有这毛病,我跟她说要去填那个表。然后她去拿来填了,我正襟危坐,偶尔瞄一下她写的,字写的挺好看的,然后什么实习经历啊奖励啊写了很多,顿时我就汗颜了,原来别人这么优秀,而我基本上全写的无。我问了一下,她是来面试数据分析什么的,然后还有其它的面试,我:…好吧,我看她还没贴照片,我想着应该绅士一下,然后我跟她说我帮你把那个固体胶拿来吧,于是起身去拿了,她跟我说了声谢谢。就这样于是熟络了一些了,聊了些关于面试什么的。时间就这样过去了。 这时候第一组群面的已经面完回来了,然后轮到我们第二组了,我的心不由得紧张起来,终于来了。于是平复了一下心情,由于我是第一号,排好队站在第一个位置,然后被一名女助理带到面试的地方。里面一张会议座,上面摆好了材料和笔,估计和面试有关。前面坐着两位,应该是本次的面试官了,那边旁听席还有两位。在自己的位置坐好后,主面试官开始发言,然后说了本次群面的内容。主要是根据材料做一个宣传方案,五分钟阅读材料,然后自我介绍,另外十五分钟进行讨论,然后推荐一个代表出来阐述最终方案。说实话我对于这样的场面很是不擅长,自我介绍的时候也是简单介绍了一下,然后声音还有些发颤,有些人显然是轻车熟路了,侃侃而谈,让我很是汗颜。讨论发言的时候我也只是简单说了一下自己的看法,然后就听他们去讲了,虽然我知道这种时候给面试官留下深刻印象才是最正确的做法,无奈表达能力一直是自己的弱项,只好默默当个听众了。群面完成后,回到休息区等待结果,我心想估计自己是没洗了。不过另一方面我在想,我申请的是技术岗,应该还是有机会的,毕竟搞技术的表达差一些也是情有可原的。这样想着,然后和之前的那女生聊了聊,然后等待结果通知。 回到等候区在等待结果。我心里也是没什么底,一方面感觉自己刚才的表现并不是很好,很可能被刷,那就尴尬了;另一方面又感觉自己应该还是有机会的。果然,后面念到通过名单的时候第一个就是我的名字,心里默默松了口气。这时候之前第一组的已经开始二面了,一个人要面半个小时左右,接下来就是漫长的等待了。于是和之前那女生一直有的没得聊着,不过我还是比较拘谨,毕竟没怎么和女生打过交道。不过能聊这么熟还是挺开心的,没什么别的想法。等待中她问我会不会问她算法什么的,她都没怎么看过,我说应该不会吧。我心里想,你那么优秀,他们肯定要你的。后面轮到她去面试了,我就一个人继续无聊的等着,没事看看窗外,跟别人也不熟悉,不好搭讪。等她面完的时候估计过了半个小时了,看她的样子应该情况还不错。然后她跟我说面试官挺和蔼的,让我不要紧张,跟我说了下问了些什么,我心里还是挺感动的。我说谢谢,她说不要跟我这么见外啊。然后她跟我说你还有多久才面试啊,等你面试完我们可以一起回学校。我心里有些激动,不过没表示出来,也没说要不要一起,主要是脸皮有些薄。后面又聊了会,她说她要走了,这时我还没开始面试,我心里一阵失落,说好了等我一起呢?不过我也明白是我想多了,毕竟才初次认识,也不熟,她一个女生也不好和我一起,我也没说什么,说好的。然后她突然盯着我,说问我一个问题,我心里一阵猛跳,心想,what?!感觉紧张地不行。结果她问我,有没有零钱,她说她没零钱了,我暗地松了口气,掏出钱包翻了翻,里面只有一张百元钞票,主要是我在学习要么刷校园卡要么支付宝,居然没有零钱,然后我说,我有公交卡,借你吧,她说不用。于是她对我说了声,加油,祝你成功。我说,谢谢。然后她就走了。虽然我心里也有一些舍不得,但想想自己也没什么好说的,萍水相逢而已。后面又想为什么不要个联系方式什么的,但是另外一个声音又告诉我,没什么必要。胡思乱想一际,然后默默叹了口气,收拾好心情,准备自己的面试。 这时候助理叫到我的名字了,让我去面试,我的心一下就提了起来。这可是真的第一次面试,以前进社团的不算的话。我怀着忐忑的心情进去面试的房间,里面坐着两个人,一个看起来就是程序猿,头发比较长,隐约还有黑眼圈;另一位中年人看起来好像是领导之类的。我交给他们两份简历,然后他们喊我在他们对面的座位上坐下了。那位程序猿看了下我的简历,问了我项目有关的。我上面有三个项目,有两个是自己没事做的,还有一个是做的外包项目,要上线用的。他显然对外包项目更有兴趣,毕竟难度更大,用到的技术也多一些。然后问了我一些项目有关的东西,然后问我有没有考虑过高并发的问题,如果有很多人访问数据库的时候该怎么办,然而实际上虽然我做项目的时候有这个想法,但是还没用到,这个项目还没上线的,所以就没怎么回答上来,这也是我这次面试最遗憾的地方。后来我想了一下,实际上可以通过数据库缓存减轻数据库压力,另外还有负载均衡什么的,不过自己也了解不多。后面让我写了个冒泡算法,我简单写了一下拿给他看了,他没说什么就放下了。回来的时候我想起其实算法写的有一点小问题,醉了。后面又问了我去上海那么远的地方有没有和家里商量过,我都家里都是看我自己的。然后就是能不能保证三个月的实习时间,我说可以向学校请假。另外还问了我一个问题就是说开发岗位竞争比较激烈,问我如果公司把我调剂到测试岗位像用Python,shell写一些脚本这样的,问我愿不愿意去。我一时不知道他究竟什么意思,如果我不愿意的话会不会影响面试结果呢?实际上我是不愿意的,因为我一直学习的都是开发的一些东西,如果去搞测试的话就白费了。可能看我比较纠结,他就说遵从自己的想法,不要想其它的,自己怎么想的就怎么说,他说如果公司真的把我调剂到测试而我本身又不愿意的话对公司对我都不好。好吧,既然都这么说了,我就说我还是更偏向于开发的,他回答说好的。然后问我有什么要问他的,我本来想问什么时候能知道结果,然后估计他早就料到了,直接说两周之内会通知。我被呛了一下,然后一时想不起有什么要问他,就说没什么要问的。然后他也没说什么,就说感谢你的面试,我也说,谢谢两位面试官,然后把座椅摆好,就出去了。 后面就回去了,蛋疼的是后来手机果然没电了,差点迷路了。最后只好打了个出租车回学校了。路上想想其实有很多做的不足的地方,像项目的问题,不调剂也不知道会影响最后的结果,最后也不该什么问题都没问。奈何面试已经过去,再想也没什么意义了。现在还在等待结果,虽然不知道最终结果会怎样,但是能经历这么一次面试收获还是挺大的。然后我又投了另外一家公司的实习简历,刚刚做完笔试,做一个多手准备吧。但愿能有一个满意的结果。 ——————— 2017-5-11晚记

May 12, 2017

一步一步打造我的第一个Android应用之缘起Android

前言 在我大二下学期的时候,开始接触到了Android开发。最开始的原因也是只是一个念头:我想要做一款Android应用,不管是什么功能的,当时也没什么具体的概念。其实在大二上学期的时候我已经自学了PHP,当时也是因为对微信开发有了兴趣。而学习微信开发需要会一门服务器端开发语言,自己只会一些c语言和c++,于是上网百度了一番。不知道看到谁说PHP语言简单易上手,而我只是一个尚未入门的菜鸟,具体的也是不知道的,于是就在慕课网上找了一个PHP的入门教程开始跟着学起来。 PHP&微信开发 这里简单谈一下PHP的学习过程是因为后面的Android应用的后端是用thinkphp开发的。刚开始学的时候确实觉得PHP确实挺简单的,因为当时已经有了c++的底子,而PHP的语法跟c++也是很相似的,所以入门也是比较快。而入门之后就开始进阶教程,也是感觉比较轻松。PHP学的感觉有一些基础之后,就开始找了一个PHP微信开发的教程开始学习,也是慕课网上的教程。微信开发的学习就不是那么顺利了,因为之前学PHP基本上只要懂得语法就行了,而语法的学习是比较简单的。而对于微信开发,最好是有一些web开发的经验,实际上微信开发也是web开发的一种罢了,而对于我这个菜鸟恰恰是最欠缺的,因为基本上我在学校学的都是语言本身的基本的东西而没有涉及到具体的开发,所以学习起来很是吃力。微信开发最开始的token验证就很是花了一番功夫。对于我来讲,接触到的一些新的名词比如token,get&post请求,url,服务器等等对于我来讲都是一头雾水,不知其然。而且又没有谁可以引导入门,完全都是靠自己摸索和在网上寻找有关的教程、博客等。其实现在看来,很多东西都是差临门一脚,只要入门了就会好很多了。而且像互联网这些知识,新的东西是层出不穷,知识的更新也是日新月路,所以自学是非常重要的,如果不能跟紧潮流,那很容易就会被淘汰掉的。后来自己捣鼓出一个微信公众号后就再也没深入研究了,有一些基本的功能比如天气提醒、讲个笑话、听个音乐什么的。没有继续深入的原因是,究其原理微信开发实际上就是web后端开发罢了,微信把用户的请求发送到你的服务器上,而开发者负责处理请求并返回结果等,并无太大难度可言,对于一个掌握基本技能的后端开发者来讲,跟着官方文档来并没有太大的难度。另一方面就是自己本身也是基于学习的,也没有真正的业务来交给我做,所以也就不再接触了。 关于Web 只会PHP的话只有自己一个人是做不出什么东西的来的,一般来讲还需要一个做前端的人。只是由于自己性格比较内向,很少去接触什么社团之类的,再加上学校的这些方面的氛围确实不是很好,很少有一些什么开发团队创业团队什么的,有也是很少的,不得不说这是大学生活的一个遗憾了。既然没有人来帮着做前端,那就只能自给自足了。最开始的时候其实是想学习web开发的,也就是html+css+js这些东西,做网站开发。只是随着学习的深入,我发现想做好一个网站远远不是只要会html等就行了,还需要好看的UI,人性化的交互设计等等。而我确实对这些并没有多大的天赋,做不出好看的网页谈何web开发呢?或许是从内心深处对设计网页、写网页、写css等不感兴趣,几次想搭建一个自己的个人博客都半途而废(直到我遇见了hexo…)。于是学完基础的一些东西后,就没有再深入地进行学习了,然后我现在的前端水平也仅限于看得懂html+css+js,可以小改一下界面。所以说我其实很佩服那些网页做得很炫酷的人,怎么说呢,人也许总是会佩服那些有已短之长的人。 关于Android 开头已经说过了,学习Android是因为一个偶然的念头。那是在大二暑假的时候,当时我会自己所学的PHP加前端知识做了一个简陋的快递查询的小网友,以现在的眼光来看,那真的是太简陋了,只有简单的输入框和淡黄色背景,当时做出来还觉得非常地有成就感,我找了一下,没想到还找到了当时在QQ空间发的截图: 代码估计已经被我删掉了,确实也没什么价值。而且因为后来换了一次服务器而忘了备份数据库的原因,对应的数据库也没了,这估计是我犯的最愚蠢的一次错误了,也有不熟悉的原因,还好并没有太大的损失,都是自学时写的一些小东西,不过这一次的教训一定要牢牢深记。 还是回到Android开发吧。因为暑假的时间也比较多,想着不能就这么浪费啊,还是学一些新的知识吧。因为Android应用接触的还是很多的,Android手机现在使用得也非常普遍,所以就决定,学Android吧。于是网上找教程,找视频什么的,我现在还记得我是在腾讯课程找的一个Android入门教程,然后开始跟着视频搭建开发坏境,安装jdk,配置Java环境,下载AndroidStudio等等,说到这里,不得不提一下了,原生Android使用Java语言开发的,而我们学校当时并没有开Java这门课,我们专业到大三的时候才开始学习。没办法,只能学一门新的语言了。所幸Java语言的语法跟c++非常的相似,而Android开发大所用到的只是Java的基础语法,更多的是熟悉各种库api的使用,视图的搭建等等,以及那一套开发的通过流程。入门还是很简单的,我现在的水平估计也只是比入门好那么一些,不过也已经能开发出一个简单的app了,具体该如何深入与进阶我还不知道该怎么做,我觉得等参与的实际项目多了进步也就很快了。 最后 还是放一下app的截图吧。 写这个系列的原因是通过完成这个app,学到了很多东西,但是却没有好好的去理一下。通过写博客的方式,不仅可以为后来者提供一点帮助,也可以让自已温习一下学过的知识,加深自己的印象。我也希望自己能把写博客这个习惯坚持下去,因为我从别人的博客中得到的帮助真的很多很多,我也希望自己能够像别人一样。

February 15, 2017

再谈快速排序

前言 说到快速排序,在学数据结构的时候都已经学到了,不过当时总是有些云里雾里的,就算是照着书上的代码敲出来,也不是很明白是什么意思。后来在大三上学期的时候又接触到了快速排序,虽然实现的方法不一样。数据结构将的时候右边和右边一起向中间靠近,而算法导论将的是从做往右靠近,其实大概的思路都是差不多的。这里不想说一些时间复杂度,算法分析什么的,网上的资料很多,也不班门弄斧了。只是把自己的一点理解写出来,也许有后来的新手对于快速排序有相同的一点疑问,而且恰好看到我这偏文章并得以解惑,那就很是不错了。 分析 快速排序主要的思想就是在待排序的数组中取一个数字作为标兵,暂且就这么理解了。然后以这个标兵为界,把比标兵小的放在标兵的左边,把比标兵大的放在标兵的右边,这样我们可以知道不管左边或者右边的是怎么样,但是这个标兵已经处于排好序的数组中的正确的位置了。当然这是升序排序,降序也是一样的道理,思想就是这么简单。但是这个数字怎么取,取哪一个,然后怎么实现标兵的左边大,右边小,这就是重点所在了。最理想的情况当然是每次取到最中间大小的那个数,因为这样的话每次两边都刚好可以分到一半;而最坏的情况就是取到最大或者最小的,这样每次标兵虽然在正确的位置,但会存在一边没有元素,而另一边则是剩下的所有元素,这已经退化为插入排序了。所以为了尽量得到好的标兵,优化的快速排序算法有三数取中快速排序,随机化的快速排序,随机化三数取中快速排序等。三数取中指的是从数组的开头、结尾、中间的中取一个中间大小的数作为标兵,这样取出的数很可能靠近最优标兵;而随机化指的是随机从数组取出一个数作为标兵;而随机化三数取中则是前面两种算法的集中。 partition 为什么要一直说这个标兵呢?标兵为什么这么重要?那就不得不说快速排序的最重要的操作 partition 了。 partition 接受一个待排序的数组作为参数,返回标兵的正确位置。另外,这里的一个编程技巧是将标兵移到最后一个位置,这样在遍历数组的过程中便于交换。完整的 partition 函数如下: /** * @param A 传入的数组 * @param l 最左边位置 * @param r 最右边位置 * @return 标兵的位置 */ int partition(int A[], int l, int r) { //最后一个元素 int x = A[r]; int i = l - 1; for (int j = l; j < r; j++) { //如果不大于最后一个元素,就放在i的左边,并且i的位置加1 if (A[j] <= x) { i++; int temp = A[i]; A[i] = A[j]; A[j] = temp; } } //交换i位置与最后位置的元素,这样i的左边的元素都小于A[i],右边的元素都大于A[i] int temp = A[i + 1]; A[i + 1] = A[r]; A[r] = temp; //返回标兵的位置 return i + 1; } 完整的代码 #include <iostream> using namespace std; void quick_sort(int A[], int p, int r); int partition(int A[], int l, int r); void print(int A[], int length); int main(int argc, char const *argv[]) { int length; cout << "请输入待排序的个数:"; cin >> length; int A[length]; cout << "请输入排序的数字,以空格分开:"; for (int i = 0; i < length; ++i) { cin >> A[i]; } quick_sort(A, 0, length - 1); print(A, length); return 0; } /** * @param A 传入的数组 * @param l 最左边位置 * @param r 最右边位置 * @return 标兵的位置 */ int partition(int A[], int l, int r) { //最后一个元素 int x = A[r]; int i = l - 1; for (int j = l; j < r; j++) { //如果不大于最后一个元素,就放在i的左边,并且i的位置加1 if (A[j] <= x) { i++; int temp = A[i]; A[i] = A[j]; A[j] = temp; } } //交换i位置与最后位置的元素,这样i的左边的元素都小于A[i],右边的元素都大于A[i] int temp = A[i + 1]; A[i + 1] = A[r]; A[r] = temp; //返回标兵的位置 return i + 1; } void print(int *A, int length) { for (int i = 0; i < length; i++) { cout << A[i] << " "; } cout << endl; } void quick_sort(int A[], int p, int r) { if (p < r) { //q即是标兵的正确位置 int q = partition(A, p, r); //对左边部分继续调用quick_sort quick_sort(A, p, q - 1); //对右边部分继续调用quick_sort quick_sort(A, q + 1, r); } } 结语 算法一道真的是博大精深,作为一个计算机专业的,我的算法其实也是很差,比较汗颜。回想刚接触这个专业时什么都不懂,到现在更是觉得学海无涯。有道是一入 IT 深似海,从此妹纸是路人,咳,不是,从此青春是路人。且行且学习吧。 ...

January 31, 2017

教务网的那点事儿

前言 一直对爬虫比较感兴趣,使用php写过一些小爬虫,爬过很多网站,然后收集有用的信息。php的curl库是一个很好用的工具,用来模拟请求爬取网页还是很方便的,使用方法也很简单。然后配上simple_html_dom,一个html的解析插件,一些简单的网页爬取工作就已经可以胜任了。后来发现python更适合来写爬虫,因为python拥有很多强大的库,借用网上的一些话: 1.python 支持多线程,多进程(fork/deamon); 2.python有丰富的异步模块、分析模块、爬虫模块以及爬虫相关的资料等等等等; 下面是一个简单的get请求: php使用curl $ch = curl_init(); curl_setopt($ch,CURLOPT_REFERER,$url); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $data = curl_exec($ch); python使用requests库 import requests html = requests.get(url) print(html.text) 看起来,python代码比起php的就简洁一些。另外,本文的代码使用的php版本为7.+,python版本为3.5+。 那接下来就进入正题吧。 简介 本文使用php代码完整地讲诉如何一步步模拟登录教务网,然后取得课表等信息,使用python原理其实也都是一样的,只是对应的方法的具体实现不一样。php代码和python代码最后都会在结尾放出来。使用php而不是python的原因是,最初使用php实现登录的,python是后来自己根据php代码的原理移植的,总之原理都是差不多的。另外,这是我第一次在简书上写文章,介于水平有限,有错之处还望指正。 正文 这应该是最重要的一步了。我们知道,成功登录教务网后肯定是会返回一个cookie的,我们要做的就是,成功登录教务网,然后储存返回的cookie,再利用这个cookie去访问其他的链接。只要正确地得到了这个cookie,那就成功一大半了。下面就是详细地步骤: 1. 获取登录url 首先,打开谷歌浏览器,进入教务网首页,F12打开开发者工具,勾上Preserve log防止链接跳转找不到;然后输入正确的学号密码,于是成功得到了登录url: 2. 获取请求参数: 其中,最重要的前五个参数和最后一个参数,然后最难的就是获取第一个,第二个,以及最后一个参数了,下面就一一讲解每个参数的获取。 既然是通过表单提交的,又不是我们自己输入的,那就右键打开查看网页源代码吧。 于是乎找了半天,什么鬼,居然没找到?想了想,直接用get请求一下登录链接,然后把返回数据写入html文件中,找到里面的form标签,可以看到所有的参数都在里面,其中重要的代码: <input name="__VIEWSTATE" type="hidden" value="*****",这就是那一串非常长非常蛋疼的参数,先放着,继续找; <input name="__VIEWSTATEGENERATOR" type="hidden" value="CAA0A5A7"/>第二个参数也找到了; <input id="efdfdfuuyyuuckjg" name="efdfdfuuyyuuckjg" type="hidden"/>,最后一个找是找到了,但是我要的value呢?这… 在最初的时候,这里困扰了我很长一段时间,导致我一直无法成功地登录,直到后来灵机一动,好吧,其实是听室友,成功模拟登录了的,说这是经过加密了参数。然后我突然醒悟了过来,于是,与教务网的斗争继续。 前端加密无非就是js了,寻找js,然后搜索有关“efdfdfuuyyuuckjg”的代码。按照这个思路,终于找了了其加密函数。其实就在返回的html数据中。其中有这么一段js代码: function chkpwd(obj) { var schoolcode = "10611"; var yhm = document.all.txt_dsdsdsdjkjkjc.value; if (obj.value != "") { if (document.all.Sel_Type.value == "ADM") yhm = yhm.toUpperCase(); var s = md5(yhm + md5(obj.value).substring(0, 30).toUpperCase() + schoolcode).substring(0, 30).toUpperCase(); document.all.efdfdfuuyyuuckjg.value = s; } else { document.all.efdfdfuuyyuuckjg.value = obj.value; } } 结合表单中的 ...

January 31, 2017