游戏题:
1.项目介绍: 你所在的团队要开始一项为期4个月的iPhone游戏项目。在团队开始工作之前,游戏引擎要支持一些功能。
任务一: 添加触屏支持(创建一个iPhone应用程序,让玩家能用3根手指触屏。每根手指能够触发一个独立的事件记录,写到stdout和一个日志文件里,保存在游戏根目录下。这一应用程序必须在iPhone4.1模拟器里运行。
)
任务二: 添加基本OpenGL渲染(在同样的应用程序里,编写一段简单渲染引擎,当玩家触屏的时候显示简单的bitmap位图。当玩家松开手指的时候,位图要迅速渐隐消失。自己创建位图或者在网上下载都可以。
)
任务三: 跟踪手指拖拽动作(在同一应用程序里,跟踪玩家的手指动作。当玩家把手指从点A移动到点B的时候,在两点之间画一条简单的线或者图像。当玩家松开手指的时候,线或者图像要迅速消失。)
任务四: 移动路径(在同一应用程序里,让某一图案沿着任务3生成的路径移动。该图案应该在玩家松开手指之后从A点移动到B点。)
选作任务: 用一个动画替换任务4里的图案,加入背景和音效。
简述题:
1. 简述项目:技术要点,功能模块实现,项目中的难点如何解决?2,内存管理问题?3,新版本的XCODE有那些新功能。
2. 说所你了解以及日常使用的版本控制系统,以及它们的优缺点
3. 你通常以怎样的数据格式跟服务端做数据交换
4. 写下你掌握的其他编程语言
5. 你了解的第三方库,常用哪些 Framework
6. 你了解的设计模式
7. 平时会代码复用,或经常重构自己的代码吗?
8. 如何让 imageNamed 同时兼容 3.x 及 4.x 系统,以及不失去缓存
9. 如何实现从外部打开程序
10. 有没有写过自定义控件?
11. 一仓库失窃,四管理员被传讯。
甲说:我们都没作案
乙说:我们中间有人作案了
丙说:乙和丁至少有一人作案了
丁说:我没作案
这四个人中有两人说真话两人说假话,问可以得到什么结论
12.做过的最得意的项目是什么
13.做项目的时候遇到了什么样的问题,怎么解决的
14.如何将敏感字变成**
15. 数据结构
16. 控制类的作用
17. 抽象类
18. 对象交互
19.Hash的含义是什么?
20.数的搜索方式有哪几种。
21.开发中遇到问题怎么处理?
22.如何对iOS设备进行性能测试?
答:Profile-> Instruments ->Time Profiler
C++
1.以下为windows NT下的32位C++程序,请说出?出的值。
void Fune(char str[100])
{
sizeof(str)=?;
}
void *p=malloc(100);
sizeof(p)=?;
2. 为什么标准头文件都有类似以下的结构?
#ifndef_INCvxWorksh
#define_INCvxWorksh
#ifdef_cplusplus
extern "C"{
#endif
#ifdef_cplusplus
}
#endif
#endif
答案: 头文件中的编译宏
#ifndef __INCvxWorksh
#define __INCvxWorksh
#endif 的作用是防止被重复引用。
总结: 作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在symbol库中的名字与C语言的不同。例如,假设某个函数的原型为:
void foo(int x, int y);
该函数被C编译器编译后在symbol库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。_foo_int_int这样的名字包含了函数名和函数参数数量及类型信息,C++就是考这种机制来实现函数重载的。
为了实现C和C++的混合编程,C++提供了C连接交换指定符号extern "C"来解决名字匹配问题,函数声明前加上extern "C"后,则编译器就会按照C语言的方式将该函数编译为_foo,这样C语言中就可以调用C++的函数了。 [img=12,12]file:///D:/鱼鱼软件/鱼鱼多媒体日记本/temp/{C74A38C4-432E-4799-B54D-73E2CD3C5206}_arc_d[1].gif[/img]
3.
在iPhone 中怎么写入c++程序,详细写下来
4.
#define SQUAKE(a)((a)*(a))
int a=5;
int b;
b = SQUAKE(**a);
此时:b=_____
5.进程间通信的方式有______
6.void *p = malloc(100);
sizeof(p)=_____
7.以下代码
char *GetString(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetString();
cout<<str<<endl;
}
以上代码对吗?为什么?
8. 以下为Windows NT下的32位C++程序,请计算sizeof的值
void Func ( char str[100] )
{
sizeof( str ) = ?
}
void *p = malloc( 100 );
sizeof ( p ) = ?
答案: sizeof( str ) = 4
sizeof ( p ) = 4
解析: Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
总结: (1)数组名指代一种数据结构,这种数据结构就是数组;例如:
char str[10];
cout << sizeof(str) << endl;
输出结果为10,str指代数据结构char[10]。
(2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;
char str[10];
str++; //编译出错,提示str不是左值
(3)数组名作为函数形参时,沦为普通指针。
Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof( str ) 、sizeof ( p ) 都为4。
9. 在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?
10. 编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
解答:
//普通构造函数
String::String(const char *str)
{
if(str==NULL)
{
m_data = new char[1]; // 得分点:对空字符串自动申请存放结束标志'\0'的空
//加分点:对m_data加NULL 判断
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length+1]; // 若能加 NULL 判断则更好
strcpy(m_data, str);
}
}
// String的析构函数
String::~String(void)
{
delete [] m_data; // 或delete m_data;
}
//拷贝构造函数
String::String(const String &other) // 得分点:输入参数为const型
{
int length = strlen(other.m_data);
m_data = new char[length+1]; //加分点:对m_data加NULL 判断
strcpy(m_data, other.m_data);
}
//赋值函数
String & String::operate =(const String &other) // 得分点:输入参数为const型
{
if(this == &other) //得分点:检查自赋值
return *this;
delete [] m_data; //得分点:释放原有的内存资源
int length = strlen( other.m_data );
m_data = new char[length+1]; //加分点:对m_data加NULL 判断
strcpy( m_data, other.m_data );
return *this; //得分点:返回本对象的引用
}
剖析:
能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上!
在这个类中包括了指针类成员变量m_data,当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款。
仔细学习这个类,特别注意加注释的得分点和加分点的意义,这样就具备了60%以上的C++基本功!
11.C++是不是类型安全的?
其它:
1.如果要开发一个类似eclipse的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路)
2.数据结构:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。
WAVE文件格式说明表
偏移地址字节数数据类型内 容
文件头 00H4 Char"RIFF"标志
04H4int32文件长度
08H4Char"WAVE"标志
0CH4Char"fmt"标志
10H4 过渡字节(不定)
14H2int16格式类别
16H2int16通道数
18H2int16 采样率(每秒样本数),表示每个通道的播放速度
1CH4int32波形音频数据传送速率
20H2int16数据块的调整数(按字节算的)
22H2 每样本的数据位数
24H4Char数据标记符"data"
28H4int32语音数据的长度
解答:
将WAV文件格式定义为结构体WAVEFORMAT:
typedef struct tagWaveFormat
{
char cRiffFlag[4];
UIN32 nFileLen;
char cWaveFlag[4];
char cFmtFlag[4];
char cTransition[4];
UIN16 nFormatTag ;
UIN16 nChannels;
UIN16 nSamplesPerSec;
UIN32 nAvgBytesperSec;
UIN16 nBlockAlign;
UIN16 nBitNumPerSample;
char cDataFlag[4];
UIN16 nAudioLength;
} WAVEFORMAT;
假设WAV文件内容读出后存放在指针buffer开始的内存单元内,则分析文件格式的代码很简单,为:
WAVEFORMAT waveFormat;
memcpy( &waveFormat, buffer,sizeof( WAVEFORMAT ) );
直接通过访问waveFormat的成员,就可以获得特定WAV文件的各项格式信息。
剖析:
本题考查面试者组织数据结构的能力,有经验的程序设计者将属于一个整体的数据成员组织为一个结构体,利用指针类型转换,可以将memcpy、memset等函数直接用于结构体地址,进行结构体的整体操作。透过这个题可以看出面试者的程序设计经验是否丰富。
3.unix上进程怎么通信?
4.Onipunks程序员测试题
要求:(请仔细看)
1- 所有程序中的编写的函数抬头都必须用英语写注释,java的程序部分使用
javadoc的模式。 在函数中,不强制要求注释,但是如果用中文注释则此题默认错误
http://java.sun.com/j2se/javadoc/writingdoccomments/
2- 应用程序的测试需单建一个Test_myprog.java的测试类。 3- 应用程序源码和任何工程文件请打压缩包
4- 所有回答如果是中文,请写在doc或PDF文档中。如果中文写在Text文档中,西文系统显示乱码则自动默认为此题错误。
第0题 在编程中,如果你碰到一个问题,算法明白,但不知道程序中具体应该如何实现,只是略为有些头绪,你会怎么做? 可以单选,也可以给出一个序列
1)- 纠结 2)- 问同事 3)- google,baidu 4)- 在论坛上发帖
第1题(C++)
在终端上,用文字实现“装甲小作战”这个游戏,全部显示用英文,如果中文显示,本
题错。
已知:(带*的是选做加分题)
. a- 两架装甲兵器对战,一个是机动装甲,一个是坦克或是装甲车
. b- 敌人随机选取,坦克或是重装装甲车。
. c- 敌人,由电脑控制。坦克每5秒攻击一次,HP是30, 防御是2-5, 使用炮进行攻击。 装甲车,每7秒攻击一次,使用机枪攻击,HP是99,防御是7-9
. d- 机枪伤害值2-7, 炮伤害值6-15
. e- 机动装甲的HP= 45,防御是2-4,举例,如果用机枪攻击,伤害值判定为5,防御判 定是3,最终机动装甲的伤害是2。
. f- 机动装甲由玩家控制每2秒可以攻击一次, 炮和导弹两种武器,伤害值分别是6-15 和20-29,
. g- 玩家攻击的方式是,键盘输入,1+回车=炮,55+回车=导弹
要求: 1- 画类图,不需要属性和方法,解释你的图和你的选择 2- 画一个时序图 3- 写代码 4- * 玩家输入需要能兼容:33436655+回车这样的情况。 5- * 玩家按键的时候,每两秒的攻击冷却时间暂停,攻击完了之后才继续。
. 6- * 玩家用炮可以连击,每次攻击的时候,可以用炮攻击4次,但使用导弹就只能使 用一次。
. 7- 现在,我们把坦克,装甲车,机动装甲的攻击冷却时间变成分别是3,6,4,在程 序中体现出来变化的可能性。
. 8- * 变成2,3,5
. 9- * 变成1,2,3
10- 装甲车和坦克攻击3次后,武器升级到亚利安离子炮和亚利安离子机枪,
亚利安离子武器伤害加成是4。
第2题(C++) 读取下面的英文文本,使用至少两个辅助类 (Parser, File_reader),从其找出以下并 显示在UI中。 复制你的测试显示到文件q1_test.txt中, 无须注释。
- 词的数量, 如果你认为有特殊情况,请注明你的词计数方式 - 元音出现的次数(全篇计数) - 按词中元音出现次数n,在console中显示计数,以及符合计数器的单词。
(2:Apple, after... 1: tests...
以此类推)
Apple runs tests on preproduction units to determine battery life. Apple's website says that the battery life "is designed to retain up to 80 percent of its original capacity after 400 full charge and discharge cycles", which is comparable to iPod batteries. The original iPhone's battery was stated to be capable of providing up to seven hours of video, six hours of web browsing, eight hours of talk time, 24 hours of music or up to 250 hours on standby. The iPhone 3G's battery is stated to be capable of providing up to seven hours of video, six hours of web browsing on Wi-Fi or five on 3G, ten hours of 2G talk time, or five on 3G, 24 hours of music, or 300 hours of standby. Apple claims that the 3GS can last for up to ten hours of video, nine hours of web browsing on Wi-Fi or five on 3G, twelve hours of 2G talk time, or five on 3G, 30 hours of music, or 300 hours of standby.
第3题 找出下面java程序的错误并改正
import java.util.Arrays; import java.util.Iterator; import java.util.List; public class SysoutTool { private static void sysout(Iterator it) { System.out.println(it.next()); sysout(it);
} public static void main(String[] args) { List toPrintList = Arrays.asList("one","two","three","four","end"); sysout(toPrintList.iterator()); }}
第4题 无须编程
把第一题变成iPhone的游戏。 摇晃iPhone来实现攻击,同时实现以下的:
1 手持iPhone窄边,两个窄边各向持有者方向接近一次炮攻击,两个长边各向持有者方 向接近一次导弹攻击。 2 双击屏幕则自动攻击,每个冷却时间后,自动攻击。
画一个UML图来告诉我你明白了题,并在图中提出程序解决办法(OC的API),除了类图 外,按照你的选择来做。
第5题 简单说说以下的这个可以正常运行的程序有什么奇怪的地方
Public int get_my_tile_index (int index, ArrayList pack) { return (Pack_oni)pack.get(index).get_Tile_class()._current_index;
}
Android&&Web:
padding margin 区别
padding是内容与边框的距离,margin是块与块之间的距离
在处理叠加时,margin会取最大值,例如对于两个div,上面div的进行margin-bottom:15px,下面的div进行margin-top:30px,它们的上下间隔不是15+30,而是30。
Margin和padding的值也可以取负值,用来消除间隔,常与float一起使用。
*title alt在img里区别 check
Img中的alt属性是替代文字,当图片没有打开或者图片不存在时候,该文字才会显示;
Img中的title属性不管图片是否存在,该提示都会显示(鼠标悬停时),它对用户和搜索引擎都是友好的,因此应该给重要的图片或者链接都加上title属性。
对于重要的图片,最好将title和alt属性都写上,确保在各个浏览器都起作用。二者都包含关键字,所以内容最好不要一样。
table div布局的区别 优劣 异同
传统的table布局方式只是利用了table元素所具有的零边框特性。Table布局的核心在于设计一个能满足板式要求的表格结构,将内容装入每个单元格中,间距和空格常用透明的gif进行占位来实现,这就导致了设计和修改将会非常复杂。此外,浏览器解析时,必须读到才会加载整个table标签里的内容,这样漫长的等待,将严重影响用户体验。
div是division的缩写,语意上表示区块,是一个比table要简单的标签。可以把网页中的各个元素划分到各div中,作为网页的结构主体。同时,使用div布局,可以通过css的样式设定,对网页中元素进行更加精确的控制,做到表现与内容相分离,这样也符合web标准规范。
三个div满屏,中间宽度自适应???
左右设固定宽并且绝对定位在left:0和right:0,中间的不设宽、要有内容并用padding撑开,使得中间块看上去与左右无缝组合。
三层嵌套圆角
xmlhttprequest 用get实现异步获取值
html:
Function ajaxfunc()
{
Var xmlHttpReq=new XMLHttpRequest(); //实例化一个XMLHttpRequest对象(除ie5ie6以外的浏览器)
xmlHttpReq.open(“GET”,”test.php”,true);
xmlHttpReq.onreadystatechange=RequestCallBack;//设置回调函数
xmlHttpReq.send(null);//使用get方法提交,所以可使用null做参数
}
Function RequestCallBack() //一旦readyState值改变,将会调用该函数
{
If(xmlHttpReq.readyState == 4)
{
If(xmlHttpReq.status == 200){document.getElementByIdx_x_x(“show”).innerHTML=xmlHttpReq.responseText;}
}
}
跑马灯(首页自动滚动)
function fun2() {
var speed2=30;
var suc2 = document.getElementByIdx_x_x("scroll_end"); //
var suc1 = document.getElementByIdx_x_x("scroll_begin"); //
var suc = document.getElementByIdx_x_x("scroll_div"); // width:944px;overflow:hidden;
suc2.innerHTML = suc1.innerHTML;
var MyMars2=setInterval(Marquees2,speed2);
suc.οnmοuseοver=function() { clearInterval(MyMars2);}
suc.οnmοuseοut=function() { MyMars2=setInterval(Marquees2,speed2);}
}
function Marquees2(){
var suc2 = document.getElementByIdx_x_x("scroll_end");
var suc1 = document.getElementByIdx_x_x("scroll_begin");
var suc = document.getElementByIdx_x_x("scroll_div");
suc2.innerHTML = suc1.innerHTML;
if(suc1.offsetWidth <= suc.scrollLeft){
suc.scrollLeft = suc.scrollLeft - suc2.offsetWidth;
}else{
suc.scrollLeft++;
}
}
搜索栏关键字匹配 js ajax实现
获取input标签的输入值,查询数据库对应表中相应字段内容,根据已输入的字符(一个汉字两个字节)来做匹配,满足时便把记录追加到页面中原先隐藏的文本框中,从而实现搜索栏关键字即时匹配。
面向对象思想好处?A类中的属性,由B类来继承【练练单体写法】
使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
linux:找到一个目录 删除其所有子目录
rm -r(删同一扩展名的)
附加:
web标准看法、意见
WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。
采用Web标准的好处
对于访问者:
● 文件下载与页面显示速度更快。
● 内容能被更多的用户所访问(包括失明、视弱、色盲等残障人士)。
● 内容能被更广泛的设备所访问(包括屏幕阅读机、手持设备、搜索机器人、打印机、电冰箱等等)。
对于网站所有者:
● 更少的代码和组件,容易维护。
● 带宽要求降低(代码更简洁),成本降低。
● 更容易被搜寻引擎搜索到。
● 改版方便,不需要变动页面内容。
● 提高网站易用性。
项目中 客户突然需要增加需求 如何做(以项目经理和工程师的角度谈)
文思信息技术有限公司(纽交所上市代码:VIT)成立于1995年,是一家信息技术服务提供商及在中国居领先地位的离岸软件开发公司之一。文思是第一家在纽约股票交易所上市的中国软件服务外包企业。据国际数据公司(IDC)的统计, 以2008年销售额衡量, 文思信息技术在为欧美市场提供离岸软件开发行业中位居中国第一。
文思在高科技行业、电信业、金融服务业、制造业、零售与分销业等领域积累了丰富的行业经验,具备全面的IT专业服务能力,为客户提供研究及开发、 企业解决方案、 应用软件开发和维护、 质量保证和测试、本地化和全球化、基础设施外包以及业务流程外包等服务,帮助客户实现投资收益最大化,并使之更专注于自身核心业务。目前,文思已成为众多财富500强企业的重要合作伙伴,主要客户包括 Microsoft, IBM, TIBCO, HP, EMC, NEC, Mitsubishi, Huawei, Lenovo, ABB, 3M等著名公司。
为了满足客户对全球交付和IT支持日益增长的需求,文思将总部设在北京,在中国上海、南京、深圳、杭州、大连、广州、成都、武汉、西安、天津、香港、台湾、日本东京、马来西亚、美国圣地亚哥、西雅图、旧金山、和英国伦敦设有分支机构,为客户提供一站式的实时服务。文思凭借多年的行业经验和全方位的专业技能,有效地满足了客户的需求,并得到了国际市场的认可。
文思以其坚实的行业领先地位、明晰的业务方向、稳定的市场开拓、先进的管理制度和强大的国际化管理团队得到了政府、投资人、社会和媒体广泛的重视和高度的评价,历年来在行业评选中屡获殊荣:
· 继2007年之后,文思连续第二年被IDC排名中国面向欧美市场 IT 服务外包提供商第一名
· 2009、2007年入选 IAOP 评选的 “全球外包100强”
· 2009、2008年入选 NeoIT 评选的 “全球服务100强” 企业
· 2006 – 2008连续三年入选“德勤中国高科技高成长50强”企业
· 2007年 “Red Herring 全球创新100强”企业
· 2006年获得“清科-中国最具投资价值50强企业”第二名