iOS最新面试题4【经典】_技术成长笔记_新浪博客

游戏题:

 

1.项目介绍: 你所在的团队要开始一项为期4个月的iPhone游戏项目。在团队开始工作之前,游戏引擎要支持一些功能。

      任务一: 添加触屏支持(创建一个iPhone应用程序,让玩家能用3根手指触屏。每根手指能够触发一个独立的事件记录,写到stdout和一个日志文件里,保存在游戏根目录下。这一应用程序必须在iPhone4.1模拟器里运行。

)

      二: 添加基本OpenGL渲染(在同样的应用程序里,编写一段简单渲染引擎,当玩家触屏的时候显示简单的bitmap位图。当玩家松开手指的时候,位图要迅速渐隐消失。自己创建位图或者在网上下载都可以。

)

      三: 跟踪手指拖拽动作(在同一应用程序里,跟踪玩家的手指动作。当玩家把手指从点A移动到点B的时候,在两点之间画一条简单的线或者图像。当玩家松开手指的时候,线或者图像要迅速消失。)

     四:  移动路径(在同一应用程序里,让某一图案沿着任务3生成的路径移动。该图案应该在玩家松开手指之后从A点移动到B点。)

      作任: 用一个动画替换任务4里的图案,加入背景和音效。

 

http://zhece.com


简述题:

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- 所有回答如果是中文,请写在docPDF文档中。如果中文写在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 altimg里区 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 外包提供商第一名

·    20092007年入 IAOP 评选 “全球外包100

·    20092008年入 NeoIT 评选 “全球服100

·    2006 2008连续三年入“德勤中国高科技高成50”企

·    2007 Red Herring 全球100”企

·    2006得“清科-中国最具投50”第二名

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值