一直没投简历,最后一波了,打算投了,今天面试的是北京的一家科技公司,现将记忆中的一些问题分享出来。
二分法是怎么做的?
直接形象的说,就类似于切橘子,从中间分开,不断的把问题给细分,从中间开始查找,往两边扩散,有点类似于递归,符合条件以后,就跳出这个迭代。
数据库分页查询是怎么做的?
问到这个问题的时候,就很尴尬了,因为我没有弄过数据库分页查询,现在的项目,数据量不是很大,所以我没用过,不过我用过SqlSugar的Take,就临时想了一个方法做分页,因为分页的目的就是为了分批次的读取数据,避免一次性数据量太大,拥挤,所以我就说我一般都是一次性Take十条数据,等点击下一页的时候,就在10条的基础上,读取后面的10条,这样子来做的分页。不过分页肯定要先进行一个排序,然后SQL语句做限制,not in 查询不在这个范围的数据。
WebService和WebApi的区别
说实在的,WebService我就只用过一次,后面全部都在用WebApi,我说WebService可能安全性会更加高,因为毕竟现在WebService用的还是比较少了,意味着比较成熟,更加隐性一点,然后面试官说,难道WebApi不安全了吗?我就说,可能因为WebApi更偏向于参数的传递,而WebService更像是方法的调用。问道WebService其实还是比较蒙的,真没怎么用过,依稀记得就是一个类似于远程调用的一种技术,XML的格式,不过我说WebApi更加适合跨平台并且开源,WeeSerivce不开源,有局限性。
怎么防止SQL注入
之前研究过一些攻防,所以这个问题有自己的解决方法,直接说数据参数化传递,这是解决方法之一,其次就是传递数据要进行限制及过滤,一般就能满足一部分了,不过最好的方法就是使用成熟的ORM框架,因为这些框架的安全技术还是比较稳妥了,并且开源的话,有更多的安全性能够及时改进。
XSS攻击如何防范及原理
XSS攻击刚好以前发现过几个,在自己家小米路由器上就发现过,我把我的手机热点名字改成JS代码,然后用小米路由器去搜索Wifi(桥接),小米路由器的管理页就会被xss攻击,其实原理就是因为浏览器解析了script代码,目前.net的东西其实都是自动开启了防止XSS攻击的,得自己手动去关闭,才会被攻击,一般不用担心,现在能够被XSS攻击的网站很少了,只要稍微过滤关键字就行了。
如果在用Python爬取百万级数据的时候,突然关机,如何重启以后恢复进程,从奔溃点继续
刚好以前接过一个单,百万级别的数据,让我去撞一个外国租车网站的库,因为数据量太大,并且是外国网站,所以访问的比较慢,客户就要求电脑是24小时运行,并且宕机以后,还能从宕机点继续执行。问到这个问题的时候,还是挺窃喜的,因为自己做过类似的东西,估计也是看我简历,所以才会问这些问题,我直接说我的几个方法,一个就是将实施的数据索引保留本地,宕机奔溃,重启以后,是直接从本地保存的索引开始,类似于:取得索引—-记录索引到本地—-读取本地索引—–读取数据,拥有了一个中间环节,先保留,再读取,然后又说自己的另外一个方法,直接边读取边记录,用Sqlite作为数据库,如果宕机,直接对比已读表和总表的差距,其实也就是类似于读取索引了,再或者两个线程,一个读一个写。其他用什么高深的方法暂时也没用过,只用过记录索引的方法。
在做C#模拟请求的时候,POST请求用到了哪些类?
送分题啊,HttpWebRequest、HttpWebResponse、WebClient、Stram之类的,如果是Post的话,需要提交参数,就需要Stram来写入文件流。
后面正准备走的时候,我叫住了他,问他加了个微信啥的,然后刚好他们人事也在旁边,就刚好坐下来,唠唠嗑,聊了一些问题,聊了薪资问题和规划问题啥的,如果不出意外的话,应该是稳了,他也明确说了,我是面试中最好的一个。如果没面试上,那应该是薪资问题没妥。