设为首页 加入收藏

TOP

只有程序员看的懂面试圣经|如何拿下编程面试(三)
2015-11-10 13:44:53 来源: 作者: 【 】 浏览:11
Tags:只有 程序员 面试 圣经 如何 拿下 编程
程语言中也不一样,在Java中,右移位会用符号扩充的办法,用1来填充负数中的空位。


逻辑右移位运算符“>>>”是Java和java script中独有的,无论数值是多少,它都用0来填充空位。


设置某一位:可以用按位或运算符(|)。


num |= 1 << x; //这行代码将会设置位元x


清除某一位:可以用按位与运算符(&),并且用取反运算符(~)来屏蔽所有你不想清除的位元。


num &= ~(1 << x); //这会清除位元x


清除一直到i的所有有效位元:


num &= (1 << (i + 1)) -1;


切换某一位元:可以用按位异或运算符(^)


num ^= 1 << x; //这会切换位元x


获得一个位元:对你想检查的位元用按位与


bit = num & (1 << x);


和面向对象编程相关的问题,一般会涉及到设计相关类里的集,以便检验你对面向对象编程的熟悉程度,并了解你是如何架构代码的。你可以使用界面和/或抽象的类来说明,并记住用单例模式(Singleton)、工厂方法模式(Factory)和策略模式(Strategy)来解决这类问题,在编写优雅而可维护的代码方面,它们能对你有长久的助益。


要知道如何用你正在使用的编程语言来读取和写入文件,并且要知道如何生成随机数。


你并不是在面试数学相关的职位,但考虑到我们被计数和测量的问题所包围,所以有一些数学概念也成了编程面试时关注的东西,比较重要的有质数、进制转换(base conversions)和一些基本的组合数学。


对于质数,要大概知道为什么它们很重要,并且要知道每一个数都可以被分解成质数的和。你还得知道如何实现埃拉托斯特尼筛法(sieve of Eratosthenes)。


对于基本的组合数学,你得知道排列和组合。


排列是对一个集合中的数按照一定的次序或者顺序进行整理。比如对于集合{1,2,3},就有6种排列的方式,也就是(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)和(3,2,1)。n个不同数字的排列方式一共有n!种。


还有一种排列叫部分排列,也就是从n个数字的集合中取出k个不同的元素,然后再进行排序。这种排列可以用下面的公式来表达:


组合则是从一个组里选择成员的一种方法,因此选择的顺序并不重要。比如一手牌可以被描述成是从52张一摞的牌堆(n=52)中选出5张组成一组(k=5)。从有n个元素的集合中挑出k个元素,当k>n时,不存在相应的组合,否则这k个元素的组合的数量可以用下面的公式来表达:


当k<=n时,从有n个元素的集合中挑出k个元素的组合形式数量的一般公式。


并发 并发问题在面试中并不常见,但也确实有过,所以你肯定不想到时候毫无准备,那就再去看一下如何生成线程、使用同步以及锁定对共享资源的访问,并理解会导致死锁(deadlocks)的几种情况。准备这个话题有一个好办法,那就是去做出来一个你最喜欢的数据结构的同步版本。


·要问问题。要真正对你的面试官每天都在做什么抱有真正的兴趣,问问他们工作中遇到的机遇与挑战,提前准备几个程式化的问题,显示一下你对公司和这个职位的兴趣。不过无论你做什么,都别问对方“你感觉如何”。首先,你很可能会收到同样程式化的回答,其次,把面试你的人摆在那样一个位置上,也不是什么好主意。


祝各位职场和面试好运!


原文来自Medium Stefan De Clercq,翻译由is译社葛仲君提供。


转载请注明原作者和来自于Nextoffer。


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一份简单的在Linux下编译及调试C.. 下一篇关于JavaScript中的事件代理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: