中兴MTK mmi面试题(其中的部分)

来源:互联网 发布:linux chgrp命令 编辑:程序博客网 时间:2024/06/05 19:21
① sizeof 的用法。考这个很多。用baidu 搜索下sizeof的用法 主要就是计算结果。这个事填空题(很多小题)
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到/0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到/0为止之前

int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''/0''结尾的

②有个填空编程题。需要完成2个字符串的功能。大致框架已近写好,有几个判断条件需要填空
     
③有个编程题 需要完成strcmp的功能。不能用到C中已有的函数。这个在网上也有很多一样的题。
用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。

1.strcat
void mycat(char *s1, char *s2)
{
while(*s1++);
s1--;
while(*s1++ = *s2++);
}
2.strcpy
void mycpy(char *s1, char *s2)
{
while(*s1++ = *s2++);
}
3.strcmp
int mycmp(char *s1,char *s2)
{
for( ; *s == *t;s++,t++)
if(*s == 0) return 0;
return *s - *t;
}
4.strlen
int mylen(char *s1)
{
char *p = s1;
while(*p++);
return p - s -1;
}
5.strlwr
char* strlwr(char *s)                        
{   unsigned char AL;
    register char *DX,*SI;
    DX=SI=s;
    while((AL=*SI++)!='/0')
    {  AL-='A';
       if(AL>'Z'-'A')continue;
       SI[-1]+='a'-'A';
    }  
    return DX;
}


④大题编程 MTK的showcategory(这个画屏函数的过程,怎么进入 怎么画左右软件。怎么设置左右功能等等,需要记住各个函数的名字)
void ShowCateMyScreen()
{
 S32 i;
 //初始化屏幕
 EntryNewScreen(SCR_MYAPP_ID,mmi_myapp_exit,null,null);
 gui_lock_double_buffer();
 entry_full_screen();
 clear_screen();
 //初始化菜单框架
 //move_fixed_list();
 //初始化菜单单项公用数据
 
 //注册按键
 register_fixed_list_shortcut_handler();
 register_fixed_list_keys();
 register_fixed_list_highlight_handle(mmi_myapp_highlight_handler);
 //显示菜单
 fixed_list_goto_item_no_rerdraw(0);
 show_fixed_list();
 
 //显示左右软键
 change_left_softkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
 change_right_softkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
 show_softkey(MMI_LEFT_SOFTKEY);
 show_softkey(MMI_RIGHT_SOFTKEY);
 
 SetLeftkeyFunction(do_action,Key_EVENT_UP);
 SetRightSoftkeyFunction(GoBackHistory,Key_EVENT_UP);
 
 gui_unlock_double_buffer();
 gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);
}
4.1  U8 EntryNewScreen(u16 newscrnID,FuncPtr newExitHandler,FuncPtr newEntryHandler,void *peerBuf);

4.2  手动加入历史
history currHistory;
currhistory.scrnID= NEW_SCREENID;
AddHistory(currHistory);

4.3 开机初始化函数
InitializeAll()

⑤填空 什么办法在修改1个字符串后,最快的在modis上看到修改效果。
2). 编译方法:
进入..//plutommi//Customer目录,执行remakeResource.bat批处理文件。
编译成功会生成一些Cust*.*文件在//plutommi//Customer//CustResource目录下,编译代码时再编译这些文件;
编译失败到build目录下查看log文件 res_gen.txt,可看到出错信息。

 3). 当我们改变了资源,想在PC模拟上看到修改效果时,也需要先执行如上的资源编译命令,
再在VC环境下build一下资源,就可以看到效果了。

⑥填空 怎么用modis模拟来电,需要用到什么工具(catcher).
用模拟器模拟拨号、来电、短信等

1. 在modis上的菜单Tools àLuanch Catchers & NS 选项
2. 然后选择Catchers工具的.exe文件
3. 在MoDIS Network Simulator 框上,点击START按钮,然后点击Inject按钮,这时来到了可以模拟很多事情的界面,可以根据自己的需要,模拟来电、短信等

MTK的高亮机制
1、 对于MTK平台中高亮事件的简单分析,仅涉及MMI层的应用

牵涉函数:

     void SetHiliteHandler( U16 itemid, FuncPtr hiliteFuncPtr );

     void RegisterHighlightHandler( void (*f)(S32 item_index) );

     void ExecuteCurrHiliteHandler( S32 hiliteid );
原创粉丝点击